diff --git a/Assets/Adobe.meta b/Assets/Adobe.meta
new file mode 100644
index 0000000..2ed5288
--- /dev/null
+++ b/Assets/Adobe.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4a9976dfedf6d8b45b5bb3f03320094d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity.meta b/Assets/Adobe/Substance3DForUnity.meta
new file mode 100644
index 0000000..6368ade
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b663793eb4aeb35429a1791214f3a9f9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor.meta b/Assets/Adobe/Substance3DForUnity/Editor.meta
new file mode 100644
index 0000000..48a0f09
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dfe765b550e1b604682ed4d23a504e89
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef b/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef
new file mode 100644
index 0000000..b15e2b3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef
@@ -0,0 +1,19 @@
+{
+ "name": "Adobe.SubstanceEditor",
+ "rootNamespace": "Adobe.SubstanceEditor",
+ "references": [
+ "GUID:0322a29457affe94ab4ade0a1555000f",
+ "GUID:b78cd19d3dcc04e4a8eb1915990b2db1"
+ ],
+ "includePlatforms": [
+ "Editor"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef.meta b/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef.meta
new file mode 100644
index 0000000..659468a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Adobe.Substance.Editor.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b5520fe70c6e8e046b4383b7dd2c75c8
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets.meta
new file mode 100644
index 0000000..9101828
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c96dedd774b1103439d2b3517649cf88
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png
new file mode 100644
index 0000000..bb32cc6
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png.meta
new file mode 100644
index 0000000..6ac688e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_128.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 30be34334090e2b478db7867a8d81934
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ 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
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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: 0
+ 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: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png
new file mode 100644
index 0000000..f0aa226
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png.meta
new file mode 100644
index 0000000..aeda6a1
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_16.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: f582f763e5df3c241b43ca4f4eac7f4c
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ 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
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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: 0
+ 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: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png
new file mode 100644
index 0000000..cd11e77
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png.meta
new file mode 100644
index 0000000..1c635eb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_256.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: cf4c0b432f60d4c42bcf5e564e5a356a
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ 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
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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: 0
+ 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: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png
new file mode 100644
index 0000000..4671bca
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png.meta
new file mode 100644
index 0000000..596ab66
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_32.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 0aa309be25f1381499253b908921e763
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ 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
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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: 0
+ 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: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png
new file mode 100644
index 0000000..12a57a9
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png.meta
new file mode 100644
index 0000000..6384ac7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/Logo_64.png.meta
@@ -0,0 +1,108 @@
+fileFormatVersion: 2
+guid: 729db32ebfbf92e49aec2d8b254e28e7
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ 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
+ 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
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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: 0
+ 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: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png
new file mode 100644
index 0000000..848ae76
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png.meta
new file mode 100644
index 0000000..a2bafa9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DCummunityAssets_18_N.png.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 1ee05e940668f9f4c9dd8e52aba9675f
+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: 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: 0
+ 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: 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/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png
new file mode 100644
index 0000000..524ccc5
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png differ
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png.meta b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png.meta
new file mode 100644
index 0000000..bf6bcfc
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Assets/S_3DHeart_18_N_nudged.png.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 2aa042885e232cc44a033f24979e8def
+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: 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: 0
+ 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: 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/Adobe/Substance3DForUnity/Editor/Scripts.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts.meta
new file mode 100644
index 0000000..926cef7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: dbef35dc04f100549aa054b79a370e9a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions.meta
new file mode 100644
index 0000000..3fd729d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c561c4b0d14ef6e44bce6495d361246e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs
new file mode 100644
index 0000000..31e4e98
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Runtime.InteropServices;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class PhysicalSizeExtension
+ {
+ public static bool IsSupported()
+ {
+ return PluginPipelines.IsHDRP();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs.meta
new file mode 100644
index 0000000..718e372
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/PhysicalSizeExtension.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 459462fea64803a4b8c2e0fe9979fba8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs
new file mode 100644
index 0000000..c2fd646
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs
@@ -0,0 +1,186 @@
+using Adobe.Substance;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceGraphSOExtensions
+ {
+ ///
+ /// Updates SubstanceGraphSO related assets using the renderResult data.
+ ///
+ /// Target render result.
+ /// Owner substance.
+ /// Returns true if textures must be reassigned to the material.
+ internal static bool UpdateAssociatedAssets(this SubstanceGraphSO graph, IntPtr renderResult, bool forceRebuild)
+ {
+ if (!forceRebuild && CheckIfTextureAssetsExist(graph))
+ {
+ ResizeExistingTexturesIfNeeded(renderResult, graph);
+ graph.UpdateOutputTextures(renderResult);
+ return false;
+ }
+
+ graph.CreateAndUpdateOutputTextures(renderResult);
+
+ if (graph.IsRuntimeOnly)
+ return true;
+
+ graph.SaveOutputsTGAFiles();
+ AssetDatabase.Refresh();
+ return true;
+ }
+
+ ///
+ /// Updates TGA files using the currect values of the outputs Texture2D.
+ ///
+ ///
+ private static void SaveOutputsTGAFiles(this SubstanceGraphSO graph)
+ {
+ foreach (var substanceOutput in graph.Output)
+ {
+ var texture = substanceOutput.OutputTexture;
+
+ if (texture == null)
+ continue;
+
+ var textureOutput = graph.GetAssociatedAssetPath(substanceOutput.Description.Identifier, "tga");
+ var bytes = texture.EncodeToTGA();
+ File.WriteAllBytes(textureOutput, bytes);
+ }
+
+ AssetDatabase.Refresh();
+
+ graph.ConfigureTextureImporter();
+ }
+
+ ///
+ /// Properly configure TextureImporters settings based on output types.
+ ///
+ ///
+ private static void ConfigureTextureImporter(this SubstanceGraphSO graph)
+ {
+ foreach (var substanceOutput in graph.Output)
+ {
+ var texture = substanceOutput.OutputTexture;
+
+ if (texture == null)
+ continue;
+
+ var textureOutput = graph.GetAssociatedAssetPath(substanceOutput.Description.Identifier, "tga");
+ substanceOutput.OutputTexture = AssetDatabase.LoadAssetAtPath(textureOutput);
+ ConfigureTextureImporter(substanceOutput);
+ }
+ }
+
+ ///
+ /// Resizes existing texture to match the expected values from renderResult.
+ ///
+ /// Render result.
+ /// Target graph.
+ private static void ResizeExistingTexturesIfNeeded(IntPtr renderResult, SubstanceGraphSO graph)
+ {
+ var renderResultsSizes = graph.GetResizedOutputs(renderResult);
+
+ //Resize existing output textures.
+ if (renderResultsSizes.Count != 0)
+ {
+ foreach (var resultSize in renderResultsSizes)
+ {
+ var outputIndex = resultSize.Item1;
+ var outputSize = resultSize.Item2;
+ var targetOutput = graph.Output.FirstOrDefault(a => a.Index == outputIndex);
+
+#if UNITY_2021_2_OR_NEWER
+ targetOutput.OutputTexture.Reinitialize(outputSize.x, outputSize.y);
+#else
+ targetOutput.OutputTexture.Resize(outputSize.x, outputSize.y);
+#endif
+ if (!graph.IsRuntimeOnly)
+ {
+ var bytes = targetOutput.OutputTexture.EncodeToTGA();
+ var assetPath = AssetDatabase.GetAssetPath(targetOutput.OutputTexture);
+ File.WriteAllBytes(assetPath, bytes);
+ }
+ }
+
+ AssetDatabase.Refresh();
+ }
+ }
+
+ ///
+ /// Try to get the texture2D instances for a give graph.
+ ///
+ /// Target graph.
+ /// Array of texture2D instances attached to each substance output.
+ /// True if all textures instances exists. If false they must be rebuild.
+ private static bool CheckIfTextureAssetsExist(SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ if (!output.IsStandardOutput(graph.OutputMaterial) && !graph.GenerateAllOutputs)
+ {
+ if (output.OutputTexture != null)
+ {
+ var assetPath = AssetDatabase.GetAssetPath(output.OutputTexture);
+
+ if (!string.IsNullOrEmpty(assetPath))
+ AssetDatabase.DeleteAsset(assetPath);
+
+ output.OutputTexture = null;
+ }
+
+ continue;
+ }
+
+ if (output.OutputTexture == null)
+ return false;
+
+ output.OutputTexture = TextureUtils.EnsureTextureCorrectness(output.OutputTexture, !output.IsNormalMap(), graph.GenerateAllMipmaps);
+ }
+
+ return true;
+ }
+
+ ///
+ /// Configures the texture importer settings to the associated texture output.
+ ///
+ /// Target output texture.
+ private static void ConfigureTextureImporter(SubstanceOutputTexture textureOutput)
+ {
+ var texturePath = AssetDatabase.GetAssetPath(textureOutput.OutputTexture);
+ TextureImporter importer = AssetImporter.GetAtPath(texturePath) as TextureImporter;
+
+ if (importer == null)
+ return;
+
+ importer.textureCompression = TextureImporterCompression.Uncompressed;
+ importer.isReadable = true;
+ importer.maxTextureSize = 4096;
+ importer.sRGBTexture = textureOutput.sRGB;
+
+ if (textureOutput.IsNormalMap())
+ {
+ importer.textureType = TextureImporterType.NormalMap;
+ }
+ else
+ {
+ var defaultSettings = importer.GetDefaultPlatformTextureSettings();
+
+ if (defaultSettings.format != TextureImporterFormat.RGBA32)
+ {
+ defaultSettings.format = TextureImporterFormat.RGBA32;
+ importer.SetPlatformTextureSettings(defaultSettings);
+ }
+ }
+
+ EditorUtility.SetDirty(importer);
+ AssetDatabase.WriteImportSettingsIfDirty(texturePath);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs.meta
new file mode 100644
index 0000000..288e62c
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Extensions/SubstanceGraphSOExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 36f38a90f11f0544a89dffe1f5752bae
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent.meta
new file mode 100644
index 0000000..7190a97
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 82768c317d7769d4ba20e5a0daa7f62b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs
new file mode 100644
index 0000000..4fa1445
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs
@@ -0,0 +1,33 @@
+using Adobe.Substance.Input.Description;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// Custome GUIContent class that provides extra information for drawing input parameters.
+ ///
+ internal class SubstanceInputGUIContent : GUIContent
+ {
+ ///
+ /// Description info for the input SerializedProperty.
+ ///
+ public SubstanceInputDescription Description;
+
+ public SerializedProperty DataProp;
+
+ public SubstanceInputGUIContent(SubstanceInputDescription description, SerializedProperty dataProp) : base(description.Label, description.Identifier)
+ {
+ Description = description;
+ DataProp = dataProp;
+ }
+
+ public SubstanceInputGUIContent(SubstanceInputDescription description, SerializedProperty dataProp, string text) : base(text)
+ {
+ Description = description;
+ DataProp = dataProp;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs.meta
new file mode 100644
index 0000000..14985fb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceInputGUIContent.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4796d6b0fe84aa64d9385f2fe71bb4bc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs
new file mode 100644
index 0000000..4cb954f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs
@@ -0,0 +1,173 @@
+using Adobe.Substance;
+using Adobe.Substance.Input.Description;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal class SubstanceInt4GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalInt4 NumericalDescription;
+
+ public SubstanceInt4GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt4 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceInt4GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt4 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceInt3GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalInt3 NumericalDescription;
+
+ public SubstanceInt3GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt3 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceInt3GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt3 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceInt2GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalInt2 NumericalDescription;
+
+ public SubstanceInt2GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt2 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceInt2GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt2 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceIntGUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalInt NumericalDescription;
+
+ public SubstanceIntGUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceIntGUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalInt numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceFloat4GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalFloat4 NumericalDescription;
+
+ public SubstanceFloat4GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat4 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceFloat4GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat4 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceFloat3GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalFloat3 NumericalDescription;
+
+ public SubstanceFloat3GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat3 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceFloat3GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat3 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceFloat2GUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalFloat2 NumericalDescription;
+
+ public SubstanceFloat2GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat2 numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceFloat2GUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat2 numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceFloatGUIContent : SubstanceInputGUIContent
+ {
+ ///
+ /// Numerical input description for the target SerializedProperty.
+ ///
+ public SubstanceInputDescNumericalFloat NumericalDescription;
+
+ public SubstanceFloatGUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat numDescription) : base(description, dataProp)
+ {
+ NumericalDescription = numDescription;
+ }
+
+ public SubstanceFloatGUIContent(SubstanceInputDescription description, SerializedProperty dataProp, SubstanceInputDescNumericalFloat numDescription, string text) : base(description, dataProp, text)
+ {
+ NumericalDescription = numDescription;
+ }
+ }
+
+ internal class SubstanceIntComboBoxGUIContent : SubstanceIntGUIContent
+ {
+ public GUIContent[] EnumValuesGUI { get; }
+
+ public int[] EnumValues { get; }
+
+ public SubstanceIntComboBoxGUIContent(SubstanceInputDescription description, SubstanceInputDescNumericalInt intDescription, SerializedProperty dataProp) : base(description, dataProp, intDescription)
+ {
+ var enumValues = intDescription.EnumValues;
+
+ EnumValuesGUI = new GUIContent[enumValues.Length];
+ EnumValues = new int[enumValues.Length];
+
+ for (int i = 0; i < EnumValuesGUI.Length; i++)
+ {
+ var enumElement = enumValues[i];
+ EnumValuesGUI[i] = new GUIContent(enumElement.Label);
+ EnumValues[i] = enumElement.Value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs.meta
new file mode 100644
index 0000000..570c2aa
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/GUIContent/SubstanceNumericalInputGUIContent.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3ee2316ba345eed46837d35e55cfa832
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer.meta
new file mode 100644
index 0000000..23090d8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 88b3a286e79783948aac3ed8572e25f1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs
new file mode 100644
index 0000000..796a467
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs
@@ -0,0 +1,200 @@
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+using System.Threading.Tasks;
+using Adobe.Substance;
+
+#if UNITY_2020_2_OR_NEWER
+
+using UnityEditor.AssetImporters;
+
+#else
+using UnityEditor.Experimental.AssetImporters;
+#endif
+
+namespace Adobe.SubstanceEditor.Importer
+{
+ internal class SubstanceAssetModificationProcessor : UnityEditor.AssetModificationProcessor
+ {
+ public static AssetDeleteResult OnWillDeleteAsset(string assetPath, RemoveAssetOptions rao)
+ {
+ if (string.IsNullOrEmpty(assetPath))
+ return AssetDeleteResult.DidNotDelete;
+
+ if (AssetDatabase.IsValidFolder(assetPath))
+ return CanDeleteFolder(assetPath, rao) ? AssetDeleteResult.DidNotDelete : AssetDeleteResult.FailedDelete;
+
+ var substanceInstance = AssetDatabase.LoadAssetAtPath(assetPath);
+
+ if (substanceInstance != null)
+ {
+ if (substanceInstance.FlagedForDelete || !File.Exists(substanceInstance.AssetPath))
+ {
+ return AssetDeleteResult.DidNotDelete;
+ }
+ else
+ {
+ Debug.LogWarning($"The target file cannot be manually deleted because it is associated with {substanceInstance.AssetPath}. In order to delete it, first the .sbsar file must be deleted.");
+ return AssetDeleteResult.FailedDelete;
+ }
+ }
+
+ if (Path.GetExtension(assetPath.ToLower()) != ".sbsar")
+ return AssetDeleteResult.DidNotDelete;
+
+ SubstanceImporter importer = AssetImporter.GetAtPath(assetPath) as SubstanceImporter;
+
+ if (importer != null)
+ {
+ foreach (var materialInstance in importer._fileAsset.GetGraphs())
+ {
+ if (materialInstance == null)
+ continue;
+
+ SubstanceEditorEngine.instance.ReleaseInstance(materialInstance);
+ materialInstance.FlagedForDelete = true;
+ AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(materialInstance));
+ }
+ }
+
+ return AssetDeleteResult.DidNotDelete;
+ }
+
+ public static AssetMoveResult OnWillMoveAsset(string from, string to)
+ {
+ if (string.IsNullOrEmpty(from))
+ return AssetMoveResult.DidNotMove;
+
+ AssetDatabase.Refresh();
+
+ if (Path.GetExtension(from.ToLower()) == ".asset")
+ {
+ var substanceInstance = AssetDatabase.LoadAssetAtPath(from);
+
+ if (substanceInstance != null)
+ {
+ substanceInstance.Move(to);
+ }
+ else
+ {
+ SubstanceEditorEngine.instance.PushMoveOperation(from, to);
+ }
+
+ return AssetMoveResult.DidNotMove;
+ }
+
+ if (Path.GetExtension(from.ToLower()) != ".sbsar")
+ return AssetMoveResult.DidNotMove;
+
+ var importer = AssetImporter.GetAtPath(from) as SubstanceImporter;
+
+ if (importer != null)
+ {
+ var so = new SerializedObject(importer);
+ var prop = so.FindProperty("_assetPath");
+
+ if (prop != null && !string.IsNullOrEmpty(prop.stringValue))
+ {
+ prop.stringValue = to;
+ so.ApplyModifiedPropertiesWithoutUndo();
+ }
+ }
+
+ AssetDatabase.Refresh(ImportAssetOptions.Default);
+
+ var fileObject = AssetDatabase.LoadAssetAtPath(from);
+
+ foreach (var materialInstance in fileObject.GetGraphs())
+ materialInstance.AssetPath = to;
+
+ return AssetMoveResult.DidNotMove;
+ }
+
+ ///
+ /// Checks if the target folder has sbsar file generated assets that can be deleted or not.
+ ///
+ /// Path to the target folder.
+ /// Remove asset options.
+ /// True if the folder can be deleted.
+ private static bool CanDeleteFolder(string assetPath, RemoveAssetOptions rao)
+ {
+ var assetsGUIDs = AssetDatabase.FindAssets($"t:{nameof(SubstanceGraphSO)}", new[] { assetPath });
+
+ foreach (var guid in assetsGUIDs)
+ {
+ var targetPath = AssetDatabase.GUIDToAssetPath(guid);
+
+ var substanceInstance = AssetDatabase.LoadAssetAtPath(targetPath);
+
+ if (substanceInstance != null)
+ {
+ if (!substanceInstance.FlagedForDelete && File.Exists(substanceInstance.AssetPath))
+ {
+ Debug.LogWarning($"The target folder cannot be deleted manually because it has assets associated with {substanceInstance.AssetPath}. In order to delete it, first the .sbsar file must be deleted.");
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+ }
+
+ ///
+ /// Importer for Substance Material Assets using the .sbsar extension .
+ ///
+ [ScriptedImporter(Adobe.Substance.Version.ImporterVersion, "sbsar")]
+ public sealed class SubstanceImporter : ScriptedImporter
+ {
+ [SerializeField]
+ public SubstanceFileSO _fileAsset;
+
+ public override void OnImportAsset(AssetImportContext ctx)
+ {
+ var rawData = ScriptableObject.CreateInstance();
+ rawData.FileContent = File.ReadAllBytes(ctx.assetPath);
+ rawData.hideFlags = HideFlags.HideInHierarchy | HideFlags.HideInInspector;
+ ctx.AddObjectToAsset("Substance Data", rawData);
+
+ _fileAsset = ScriptableObject.CreateInstance();
+
+ CreateSubstanceFile(ctx, rawData);
+
+ ctx.AddObjectToAsset("Substance File", _fileAsset);
+ ctx.SetMainObject(_fileAsset);
+ }
+
+ public SubstanceGraphSO GetDefaultGraph()
+ {
+ var graphs = _fileAsset.GetGraphs();
+
+ if (graphs == null || graphs.Count == 0)
+ return null;
+
+ return graphs[0];
+ }
+
+ private void CreateSubstanceFile(AssetImportContext ctx, SubstanceFileRawData rawData)
+ {
+ var graphCount = Engine.GetFileGraphCount(rawData.FileContent);
+
+ var initInfos = new List();
+
+ for (int i = 0; i < graphCount; i++)
+ {
+ var guid = System.Guid.NewGuid().ToString();
+
+ initInfos.Add(new EditorTools.SubstanceInstanceInfo()
+ {
+ GUID = guid,
+ Index = i,
+ IsRoot = true,
+ Name = $"graph_{i}"
+ });
+ }
+
+ EditorTools.CreateSubstanceInstanceAsync(ctx.assetPath, rawData, initInfos);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs.meta
new file mode 100644
index 0000000..8139191
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporter.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dda12f74ff9116a42b23482252b2c482
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs
new file mode 100644
index 0000000..99991de
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs
@@ -0,0 +1,643 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+using System.Text.RegularExpressions;
+using Adobe.Substance;
+
+#if UNITY_2020_2_OR_NEWER
+
+using UnityEditor.AssetImporters;
+
+#else
+using UnityEditor.Experimental.AssetImporters;
+#endif
+
+namespace Adobe.SubstanceEditor.Importer
+{
+ [CustomEditor(typeof(SubstanceImporter)), CanEditMultipleObjects]
+ internal class SubstanceImporterEditor : ScriptedImporterEditor
+ {
+ protected override bool needsApplyRevert => false;
+
+ public override bool showImportedObject => false;
+
+ private int _selectedInstance = 0;
+
+ //Size of the preview thumbnail for instances in the list.
+ private const int _instanceListPreviewSize = 64;
+
+ private const int _isntanceListElementSpacing = 0;
+
+ private Vector2 _scrollPosition = Vector2.zero;
+
+ public SubstanceImporter _importer;
+
+ public List _graphs;
+
+ public string _tempLabelName;
+
+ private Dictionary _elementsEditors;
+
+ private Dictionary _previewEditors;
+
+ private SubstanceGraphSOEditor _currentEditor;
+
+ private Texture2D _backgroundImage = default;
+
+ private Texture2D _textHightlightBackground = default;
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+
+ _elementsEditors = new Dictionary();
+ _previewEditors = new Dictionary();
+ _importer = target as SubstanceImporter;
+ _graphs = _importer._fileAsset.GetGraphs();
+
+ EditorApplication.projectWindowItemOnGUI += OnHierarchyWindowItemOnGUI;
+ Undo.undoRedoPerformed += UndoCallback;
+ EnsureRefreshedMaterials();
+ EnsureRequiredTextures();
+ }
+
+ public override void OnDisable()
+ {
+ EditorApplication.projectWindowItemOnGUI -= OnHierarchyWindowItemOnGUI;
+ Undo.undoRedoPerformed -= UndoCallback;
+ SaveCurrentInsatance();
+ base.OnDisable();
+ }
+
+ private void SaveCurrentInsatance()
+ {
+ if (_currentEditor != null)
+ {
+ _currentEditor.SaveEditorChanges();
+ return;
+ }
+
+ if (_graphs == null || _graphs.Count <= _selectedInstance)
+ {
+ return;
+ }
+
+ var currentInstance = _graphs[_selectedInstance];
+
+ if (_elementsEditors.TryGetValue(currentInstance, out SubstanceGraphSOEditor editor))
+ editor.SaveEditorChanges();
+ }
+
+ private void UndoCallback()
+ {
+ if (Selection.activeObject is SubstanceFileSO)
+ {
+ var target = Selection.activeObject as SubstanceFileSO;
+
+ if (_importer._fileAsset == target)
+ {
+ var targetGraph = _graphs[_selectedInstance];
+ targetGraph.RenderTextures = true;
+ SubstanceEditorEngine.instance.PushAllInputsToUpdate();
+ EditorUtility.SetDirty(targetGraph);
+ }
+ }
+ }
+
+ protected static void OnHierarchyWindowItemOnGUI(string guid, Rect rt)
+ {
+ var currentEvent = Event.current;
+
+ if ("Duplicate" == currentEvent.commandName && currentEvent.type == EventType.ExecuteCommand)
+ {
+ var assetPath = AssetDatabase.GUIDToAssetPath(guid);
+
+ if (Path.GetExtension(assetPath) == ".sbsar")
+ {
+ Debug.LogWarning("Substance graph can not be manually duplicated.");
+ currentEvent.Use();
+ }
+ }
+ }
+
+ #region Draw Body
+
+ public override void OnInspectorGUI()
+ {
+ DrawMainUI();
+ }
+
+ private void DrawMainUI()
+ {
+ if (_graphs.Count == 0)
+ return;
+
+ EditorGUILayout.BeginVertical();
+ {
+ //Draw instances list.
+ EditorGUILayout.BeginVertical();
+ DrawInstancesListSection();
+ EditorGUILayout.EndVertical();
+ DrawUILine();
+
+ //Draw shader UI.
+ EditorGUILayout.BeginHorizontal();
+ DrawShaderSelectionSection();
+ EditorGUILayout.EndHorizontal();
+
+ DrawUILine();
+
+ //Draw selected instance properties.
+ EditorGUILayout.BeginVertical();
+ DrawSelectedInstanceProperties(_graphs[_selectedInstance]);
+ EditorGUILayout.EndVertical();
+ }
+ EditorGUILayout.EndVertical();
+ }
+
+ private void DrawInstancesListSection()
+ {
+ int numGraphs = _graphs.Count;
+
+ if (numGraphs == 0)
+ return;
+
+ //Instance UI width = preview texture size + padding.
+ float entryWidth = _instanceListPreviewSize + 16;
+
+ //Instance UI height = preview texture size + name text.
+ float entryHeight = _instanceListPreviewSize + EditorGUIUtility.singleLineHeight;
+
+ EditorGUILayout.LabelField("Substance Graphs");
+ EditorGUILayout.Space();
+
+ using (var scrollViewScope = new EditorGUILayout.ScrollViewScope(_scrollPosition, false, false))
+ {
+ scrollViewScope.handleScrollWheel = false;
+ _scrollPosition = scrollViewScope.scrollPosition;
+
+ var listStyle = new GUIStyle();
+ listStyle.padding = new RectOffset(15, 15, 15, 15);
+
+ var rect = EditorGUILayout.BeginHorizontal(listStyle);
+ {
+ //Gray area
+ var targetRect = new Rect(rect.x + 5, rect.y, rect.width - 10, rect.height);
+ DrawGrayRectangle(targetRect);
+
+ //Text styles
+ var normalTextStyle = new GUIStyle();
+ normalTextStyle.wordWrap = true;
+ normalTextStyle.alignment = TextAnchor.MiddleCenter;
+
+ if (EditorGUIUtility.isProSkin)
+ normalTextStyle.normal.textColor = new Color(0.8f, 0.8f, 0.8f, 1);
+
+ var highlightTextStyle = new GUIStyle();
+ highlightTextStyle.alignment = TextAnchor.MiddleCenter;
+ highlightTextStyle.normal.textColor = Color.white;
+ highlightTextStyle.normal.background = _textHightlightBackground;
+ highlightTextStyle.wordWrap = true;
+
+ for (int instanceIndex = 0; instanceIndex < numGraphs; instanceIndex++)
+ {
+ if (TryGetInstanceByIndex(instanceIndex, out SubstanceGraphSO instance))
+ {
+ EditorGUILayout.BeginVertical(GUILayout.Width(entryWidth), GUILayout.Height(entryHeight));
+ {
+ DrawListElement(instance, instanceIndex, entryWidth - 12, normalTextStyle, highlightTextStyle);
+ }
+ EditorGUILayout.EndVertical();
+ GUILayout.Space(_isntanceListElementSpacing);
+ }
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.Space(5);
+ EditorGUILayout.BeginHorizontal();
+ DrawAddAndRemove();
+ EditorGUILayout.EndHorizontal();
+ }
+
+ private void DrawGrayRectangle(Rect rect)
+ {
+ var style = new GUIStyle();
+ style.normal.background = _backgroundImage;
+ GUI.Box(rect, GUIContent.none, style);
+ }
+
+ private void DrawListElement(SubstanceGraphSO instance, int instanceIndex, float entryWidth, GUIStyle normalStyle, GUIStyle highlightStyle)
+ {
+ Material graphMaterial = instance.OutputMaterial;
+
+ if (graphMaterial == null)
+ return;
+
+ Texture2D miniThumbnail = AssetPreview.GetAssetPreview(graphMaterial);
+
+ if (GUILayout.Button(miniThumbnail, GUILayout.Width(_instanceListPreviewSize),
+ GUILayout.Height(_instanceListPreviewSize)))
+ {
+ OnInstanceSelected(instanceIndex);
+ return;
+ }
+
+ if (instanceIndex != _selectedInstance)
+ {
+ GUILayout.Label(instance.Name, normalStyle, GUILayout.Width(entryWidth));
+ return;
+ }
+
+ var label = _tempLabelName ?? instance.Name;
+ _tempLabelName = GUILayout.TextField(label, highlightStyle, GUILayout.Width(entryWidth));
+
+ if (!_tempLabelName.Equals(instance.Name, StringComparison.Ordinal))
+ {
+ Event e = Event.current;
+ if (e.keyCode == KeyCode.Return)
+ {
+ if (e.type == EventType.KeyUp)
+ {
+ if (!TryRenameInstance(instance, _tempLabelName))
+ {
+ EditorUtility.DisplayDialog("Error", "The provided name can't be assigned to a substance instance.", "Ok");
+ _tempLabelName = instance.Name;
+ }
+ }
+ }
+ }
+ }
+
+ private void DrawAddAndRemove()
+ {
+ if (GUILayout.Button("Copy graph"))
+ {
+ CreateNewInstance();
+ GUIUtility.ExitGUI();
+ }
+
+ if (GUILayout.Button("Delete graph"))
+ {
+ if (TryGetSelectedInstance(out SubstanceGraphSO instanceSO))
+ {
+ DeleteInstance(instanceSO);
+ GUIUtility.ExitGUI();
+ }
+ }
+ }
+
+ private void DrawShaderSelectionSection()
+ {
+ EditorGUILayout.LabelField("Shader", GUILayout.Width(55));
+
+ if (!TryGetCurrentGraph(out SubstanceGraphSO graph))
+ return;
+
+ if (graph.OutputMaterial == null || graph.OutputMaterial.shader == null)
+ return;
+
+ var currentShader = graph.OutputMaterial.shader;
+
+ var shaderNames = ShaderUtil.GetAllShaderInfo().Select((a) => a.name).Where(b => !b.StartsWith("Hidden") && !b.StartsWith("GUI")).ToArray();
+ var selectedElement = shaderNames.FirstOrDefault(a => a == currentShader.name);
+ var selectedIndex = Array.IndexOf(shaderNames, selectedElement);
+
+ var newSelected = EditorGUILayout.Popup(selectedIndex, shaderNames, GUILayout.MaxWidth(320));
+
+ if (newSelected != selectedIndex)
+ {
+ var newSelectedElement = shaderNames[newSelected];
+ _graphs[_selectedInstance].OutputMaterial.shader = Shader.Find(newSelectedElement);
+ EditorUtility.SetDirty(_graphs[_selectedInstance].OutputMaterial);
+ AssetDatabase.Refresh();
+ }
+
+ if (GUILayout.Button("Edit", GUILayout.MaxWidth(60)))
+ {
+ EditorUtility.FocusProjectWindow();
+ Selection.activeObject = currentShader;
+ }
+ }
+
+ private void DrawSelectedInstanceProperties(SubstanceGraphSO currentInstance)
+ {
+ if (!_elementsEditors.TryGetValue(currentInstance, out SubstanceGraphSOEditor editor))
+ {
+ editor = SubstanceGraphSOEditor.CreateEditor(currentInstance) as SubstanceGraphSOEditor;
+ _elementsEditors.Add(currentInstance, editor);
+ }
+
+ if (_currentEditor != null && _currentEditor != editor)
+ {
+ _currentEditor.SaveEditorChanges();
+ }
+
+ _currentEditor = editor;
+ editor.OnInspectorGUI();
+ }
+
+ #endregion Draw Body
+
+ #region Static Preview
+
+ public override Texture2D RenderStaticPreview(string assetPath, UnityEngine.Object[] subAssets, int width, int height)
+ {
+ if (_importer == null)
+ return null;
+
+ if (_graphs[0] == null)
+ return null;
+
+ if (_graphs[0].HasThumbnail)
+ {
+ return _graphs[0].GetThumbnailTexture();
+ }
+ else
+ {
+ var icon = UnityPackageInfo.GetSubstanceIcon(width, height);
+
+ if (icon != null)
+ {
+ Texture2D tex = new Texture2D(width, height);
+ EditorUtility.CopySerialized(icon, tex);
+ return tex;
+ }
+ }
+
+ return base.RenderStaticPreview(assetPath, subAssets, width, height);
+ }
+
+ #endregion Static Preview
+
+ #region Preview
+
+ public override bool HasPreviewGUI()
+ {
+ return true;
+ }
+
+ public override GUIContent GetPreviewTitle()
+ {
+ if (!TryGetCurrentGraph(out SubstanceGraphSO graph))
+ return new GUIContent("Material", null, "");
+
+ if (graph.OutputMaterial == null)
+ return new GUIContent("Material", null, "");
+
+ if (string.IsNullOrEmpty(graph.OutputMaterial.name))
+ return new GUIContent("Material", null, "");
+
+ return new GUIContent(graph.OutputMaterial.name, null, "");
+ }
+
+ public override void OnPreviewSettings()
+ {
+ if (_graphs == null || _graphs.Count == 0)
+ {
+ Debug.LogWarning("No graphs found. Please make sure to not rename folders with that are managed by the Substance Plugin.");
+ return;
+ }
+
+ var selectedInstance = _graphs[_selectedInstance];
+
+ if (selectedInstance == null)
+ return;
+
+ if (!_previewEditors.TryGetValue(selectedInstance, out MaterialEditor editor))
+ {
+ var material = selectedInstance?.OutputMaterial;
+
+ if (material != null)
+ {
+ editor = MaterialEditor.CreateEditor(material) as MaterialEditor;
+ _previewEditors.Add(selectedInstance, editor);
+ }
+ }
+
+ if (editor != null)
+ editor.OnPreviewSettings();
+ }
+
+ public override void OnPreviewGUI(Rect r, GUIStyle background)
+ {
+ if (_graphs == null || _graphs.Count == 0)
+ {
+ Debug.LogWarning("No graphs found. Please make sure to not rename folders with that are managed by the Substance Plugin.");
+ return;
+ }
+
+ var selectedInstance = _graphs[_selectedInstance];
+
+ if (selectedInstance == null)
+ return;
+
+ if (!_previewEditors.TryGetValue(selectedInstance, out MaterialEditor editor))
+ {
+ var material = selectedInstance?.OutputMaterial;
+
+ if (material != null)
+ {
+ editor = MaterialEditor.CreateEditor(material) as MaterialEditor;
+ _previewEditors.Add(selectedInstance, editor);
+ }
+ }
+
+ if (editor != null)
+ editor.OnPreviewGUI(r, background);
+ }
+
+ public override void DrawPreview(Rect previewArea)
+ {
+ OnPreviewGUI(previewArea, new GUIStyle());
+ }
+
+ #endregion Preview
+
+ ///
+ /// Creates a new instance of a SubstanceGraphSO with a copy of the values from the current selected instance.
+ ///
+ /// Name for the new instance.
+ /// Current selected instance.
+ private void CreateNewInstance()
+ {
+ if (!TryGetSelectedInstance(out SubstanceGraphSO rootInstance))
+ {
+ if (!TryGetInstanceByIndex(0, out rootInstance))
+ {
+ return;
+ }
+ }
+
+ var newInstanceName = GenerateNewInstanceName(rootInstance);
+
+ var instanceAsset = EditorTools.CreateSubstanceInstance(_importer.assetPath, rootInstance.RawData, newInstanceName, rootInstance.GetNativeID(), System.Guid.NewGuid().ToString(), copy: rootInstance);
+ SubstanceEditorEngine.instance.RenderInstanceAsync(instanceAsset);
+
+ _graphs.Add(instanceAsset);
+ EditorUtility.SetDirty(_importer);
+ AssetDatabase.Refresh();
+ _selectedInstance = _graphs.Count - 1;
+ ResetTempName();
+ }
+
+ private void DeleteInstance(SubstanceGraphSO instance)
+ {
+ if (instance.IsRoot)
+ {
+ EditorUtility.DisplayDialog("Invalid operation", "Can't delete root instance.", "OK");
+ return;
+ }
+
+ _graphs.Remove(instance);
+ EditorUtility.SetDirty(_importer);
+
+ SubstanceEditorEngine.instance.ReleaseInstance(instance);
+ instance.FlagedForDelete = true;
+ EditorUtility.SetDirty(instance);
+
+ var assetPath = AssetDatabase.GetAssetPath(instance);
+ AssetDatabase.DeleteAsset(assetPath);
+ AssetDatabase.Refresh();
+ _selectedInstance = 0;
+ ResetTempName();
+ }
+
+ private void OnInstanceSelected(int instanceIndex)
+ {
+ _selectedInstance = instanceIndex;
+
+ if (TryGetSelectedInstance(out SubstanceGraphSO target))
+ EditorGUIUtility.PingObject(target);
+
+ ResetTempName();
+
+ GUIUtility.ExitGUI();
+ }
+
+ private bool TryRenameInstance(SubstanceGraphSO instanceSO, string name)
+ {
+ if (!IsValidAndNoConflict(name))
+ return false;
+
+ instanceSO.Rename(name);
+ return true;
+ }
+
+ #region Utilities
+
+ private string GenerateNewInstanceName(SubstanceGraphSO currentInstance)
+ {
+ var index = _graphs.Count;
+ var newName = currentInstance.Name + $"_copy";
+
+ while (!IsValidAndNoConflict(newName))
+ newName = currentInstance.Name + $"__copy{index++}";
+
+ return newName;
+ }
+
+ private bool IsValidAndNoConflict(string name)
+ {
+ if (!IsValidName(name))
+ return false;
+
+ if (_graphs.Where(a => a != null).FirstOrDefault(a => a.Name == name) != null)
+ return false;
+
+ return true;
+ }
+
+ private bool IsValidName(string name)
+ {
+ if (string.IsNullOrEmpty(name) || string.IsNullOrWhiteSpace(name))
+ return false;
+
+ Regex containsABadCharacter = new Regex("[" + Regex.Escape(new string(Path.GetInvalidFileNameChars())) + "]");
+
+ if (containsABadCharacter.IsMatch(name))
+ return false;
+
+ return true;
+ }
+
+ private bool TryGetCurrentGraph(out SubstanceGraphSO graph)
+ {
+ graph = null;
+
+ if (!TryGetSelectedInstance(out graph))
+ return false;
+
+ return true;
+ }
+
+ private bool TryGetInstanceByIndex(int index, out SubstanceGraphSO instance)
+ {
+ instance = null;
+
+ if (_importer == null || _graphs == null || _graphs.Count == 0)
+ return false;
+
+ if (_graphs.Count <= index)
+ return false;
+
+ instance = _graphs[index];
+
+ return instance != null;
+ }
+
+ private bool TryGetSelectedInstance(out SubstanceGraphSO instance)
+ {
+ return TryGetInstanceByIndex(_selectedInstance, out instance);
+ }
+
+ private static void DrawUILine()
+ {
+ var rect = EditorGUILayout.BeginVertical();
+ {
+ Handles.color = Color.black;
+ EditorGUILayout.Space(15);
+ Handles.DrawLine(new Vector2(rect.x - 40, rect.y + (rect.height / 2)), new Vector2(rect.width + 20, rect.y + (rect.height / 2)));
+ EditorGUILayout.Space(15);
+ }
+ EditorGUILayout.EndVertical();
+ }
+
+ private void ResetTempName()
+ {
+ if (TryGetSelectedInstance(out SubstanceGraphSO material))
+ _tempLabelName = material.Name;
+ }
+
+ private void EnsureRequiredTextures()
+ {
+ float c = (EditorGUIUtility.isProSkin) ? 0.35f : 0.65f;
+ _backgroundImage = Globals.CreateColoredTexture(64, 64, new Color(c, c, c, 1));
+ _textHightlightBackground = Globals.CreateColoredTexture(_instanceListPreviewSize, _instanceListPreviewSize, Color.gray);
+ }
+
+ private void EnsureRefreshedMaterials()
+ {
+ foreach (var instance in _graphs)
+ {
+ if (instance == null)
+ return;
+
+ var material = instance.OutputMaterial;
+
+ if (material == null)
+ continue;
+
+ EditorUtility.SetDirty(material);
+ }
+
+ AssetDatabase.Refresh();
+ }
+
+ #endregion Utilities
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs.meta
new file mode 100644
index 0000000..15c8d5f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Importer/SubstanceImporterEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 87dac30333bc79345bec7a3b39edcc45
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package.meta
new file mode 100644
index 0000000..bfd96a9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c179733d89e9d09458a2e90cf842d409
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs
new file mode 100644
index 0000000..34ca63b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs
@@ -0,0 +1,115 @@
+using Adobe.Substance;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class UnityPackageInfo
+ {
+ public const string PackageName = "com.adobe.substanceforunity";
+
+ private static UnityEditor.PackageManager.PackageInfo _cachedPackageInfo = null;
+
+ private static string IconPath_256 => $"{PathUtils.SubstanceRootPath}/Editor/Assets/Logo_256.png";
+ private static string IconPath_128 => $"{PathUtils.SubstanceRootPath}/Editor/Assets/Logo_128.png";
+ private static string IconPath_64 = $"{PathUtils.SubstanceRootPath}/Editor/Assets/Logo_64.png";
+ private static string IconPath_32 = $"{PathUtils.SubstanceRootPath}/Editor/Assets/Logo_32.png";
+
+ private static Texture2D _cachedIcon256 = null;
+ private static Texture2D _cachedIcon128 = null;
+ private static Texture2D _cachedIcon64 = null;
+ private static Texture2D _cachedIcon32 = null;
+
+ public static UnityEditor.PackageManager.PackageInfo GetPackageInfo()
+ {
+#pragma warning disable 162
+ if (!PathUtils.UsingPackageManager)
+ return null;
+#pragma warning restore 162
+
+ if (_cachedPackageInfo != null)
+ return _cachedPackageInfo;
+
+ var packageInfoRequest = UnityEditor.PackageManager.Client.List(true);
+
+ while (packageInfoRequest.Status == UnityEditor.PackageManager.StatusCode.InProgress)
+ continue;
+
+ var packages = packageInfoRequest.Result?.FirstOrDefault(a => a.name == PackageName);
+
+ if (packages != null)
+ _cachedPackageInfo = packages;
+
+ return _cachedPackageInfo;
+ }
+
+ public static Texture2D GetSubstanceIcon(int width, int height)
+ {
+ if (width != height)
+ return GetSubstanceIconResized(width, height);
+
+ switch (width)
+ {
+ case 256:
+ return GetSubstanceIcon256();
+
+ case 128:
+ return GetSubstanceIcon128();
+
+ case 64:
+ return GetSubstanceIcon64();
+
+ case 32:
+ return GetSubstanceIcon32();
+
+ default:
+ return GetSubstanceIconResized(width, height);
+ }
+ }
+
+ public static Texture2D GetSubstanceIconResized(int width, int height)
+ {
+ var icon = GetSubstanceIcon256();
+ Texture2D tex = new Texture2D(width, height);
+ EditorUtility.CopySerialized(icon, tex);
+ return tex;
+ }
+
+ public static Texture2D GetSubstanceIcon256()
+ {
+ if (_cachedIcon256 != null)
+ return _cachedIcon256;
+
+ _cachedIcon256 = AssetDatabase.LoadAssetAtPath(IconPath_256);
+ return _cachedIcon256;
+ }
+
+ public static Texture2D GetSubstanceIcon128()
+ {
+ if (_cachedIcon128 != null)
+ return _cachedIcon128;
+
+ _cachedIcon128 = AssetDatabase.LoadAssetAtPath(IconPath_128);
+ return _cachedIcon128;
+ }
+
+ public static Texture2D GetSubstanceIcon64()
+ {
+ if (_cachedIcon64 != null)
+ return _cachedIcon64;
+
+ _cachedIcon64 = AssetDatabase.LoadAssetAtPath(IconPath_64);
+ return _cachedIcon64;
+ }
+
+ public static Texture2D GetSubstanceIcon32()
+ {
+ if (_cachedIcon32 != null)
+ return _cachedIcon32;
+
+ _cachedIcon32 = AssetDatabase.LoadAssetAtPath(IconPath_32);
+ return _cachedIcon32;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs.meta
new file mode 100644
index 0000000..f77ad0b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Package/UnityPackageInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 72cba7e39e029164f841301c6320fd30
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor.meta
new file mode 100644
index 0000000..2b0bbab
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 741dbc64474bb4d4683c75c99534538a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs
new file mode 100644
index 0000000..2a41591
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs
@@ -0,0 +1,29 @@
+using Adobe.Substance;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor.ProjectSettings
+{
+ internal static class Extensions
+ {
+ public static void DrawAboutWindow()
+ {
+ string aboutMessage = "Plugin Info:\n";
+ aboutMessage += "Package Name: Substance 3D for Unity" + "\n";
+ aboutMessage += "Package Version: " + Version.PluginVersion + "\n";
+ aboutMessage += "Engine Version: " + Version.EngineVersion + "\n";
+
+ bool state = EditorUtility.DisplayDialog("About Substance 3D", aboutMessage, "Copy to clipboard", "Close");
+
+ if (state == true)
+ {
+ // Copy to clipboard:
+ TextEditor _textEditor = new TextEditor();
+ _textEditor.text = aboutMessage;
+ _textEditor.OnFocus();
+ _textEditor.Copy();
+ DrawAboutWindow();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs.meta
new file mode 100644
index 0000000..cf2e79c
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/Extensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bd5f8823e57c3e04fbc09267e76055db
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs
new file mode 100644
index 0000000..474c49e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs
@@ -0,0 +1,191 @@
+using Adobe.Substance;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.UIElements;
+
+namespace Adobe.SubstanceEditor.ProjectSettings
+{
+ ///
+ /// Settings provider for the Adobe Substance tab in the Unity project settings UI.
+ ///
+ internal class SubstanceEditorSettingsProvider : SettingsProvider
+ {
+ private const string substanceURL = "https://substance3d.adobe.com/assets/";
+
+ private SerializedObject _editorSettings;
+
+ private SerializedProperty _generateAllTextureProp;
+
+ private SerializedProperty _targetResolutionProp;
+
+ private static string SubstanceAssetLogoPath => $"{PathUtils.SubstanceRootPath}/Editor/Assets/S_3DHeart_18_N_nudged.png";
+ private static string SubstanceCommunityAssetLogoPath => $"{PathUtils.SubstanceRootPath}/Editor/Assets/S_3DCummunityAssets_18_N.png";
+
+ private const string SubstanceCommunityURL = "https://substance3d.adobe.com/community-assets";
+
+ private const string SubstanceAssetURL = "https://substance3d.adobe.com/assets";
+
+ private class Contents
+ {
+ public static readonly GUIContent GenerateAllTexturesText = new GUIContent("Generate all outputs", "Generate all output textures for the substance graphs.");
+ public static readonly GUIContent TextureResoltuionText = new GUIContent("Texture resolution", "Texture resolution for all graphs outputs.");
+ public static readonly GUIContent SubstanceAssetsIcon = new GUIContent();
+ public static readonly GUIContent SubstanceCommunityIcon = new GUIContent();
+ }
+
+ private class Styles
+ {
+ public static GUIStyle AssetButtonsStyle;
+ public static readonly GUIStyle SubstanceAssetButtonsPanelStyle = new GUIStyle();
+ public static readonly GUIStyle RichTextStyle = new GUIStyle() { richText = true };
+ }
+
+ public SubstanceEditorSettingsProvider(string path, SettingsScope scope = SettingsScope.User) : base(path, scope)
+ {
+ }
+
+ public override void OnActivate(string searchContext, VisualElement rootElement)
+ {
+ _editorSettings = SubstanceEditorSettingsSO.GetSerializedSettings();
+ _generateAllTextureProp = _editorSettings.FindProperty("_generateAllTexture");
+ _targetResolutionProp = _editorSettings.FindProperty("_targetResolution");
+
+ Contents.SubstanceAssetsIcon.image = AssetDatabase.LoadAssetAtPath(SubstanceAssetLogoPath);
+ Contents.SubstanceAssetsIcon.tooltip = SubstanceAssetURL;
+
+ Contents.SubstanceCommunityIcon.image = AssetDatabase.LoadAssetAtPath(SubstanceCommunityAssetLogoPath);
+ Contents.SubstanceCommunityIcon.tooltip = SubstanceCommunityURL;
+ }
+
+ public override void OnGUI(string searchContext)
+ {
+ _editorSettings.Update();
+
+ if (Styles.AssetButtonsStyle == null)
+ {
+ Styles.AssetButtonsStyle = new GUIStyle(GUI.skin.label);
+ Styles.AssetButtonsStyle.fixedHeight = 24;
+ Styles.AssetButtonsStyle.fixedWidth = 24;
+ }
+
+ EditorGUILayout.Space();
+
+ EditorGUI.indentLevel++;
+ {
+ if (_generateAllTextureProp != null)
+ {
+ EditorGUILayout.Space();
+ EditorGUILayout.PropertyField(_generateAllTextureProp, Contents.GenerateAllTexturesText, GUILayout.Width(100));
+ }
+
+ if (_targetResolutionProp != null)
+ {
+ EditorGUILayout.Space();
+ EditorDrawUtilities.DrawResolutionSelection(_targetResolutionProp, Contents.TextureResoltuionText);
+ }
+
+ DrawEngineInfo();
+
+ EditorGUILayout.Space();
+
+ DrawTextLinksAndAbout();
+ //DrawAboutText();
+ }
+ EditorGUI.indentLevel--;
+
+ _editorSettings.ApplyModifiedProperties();
+ }
+
+ private void DrawEngineInfo()
+ {
+ string label = PlatformUtils.IsCPU() ? "CPU" : "GPU";
+ var content = new GUIContent($"Computing textures with {label}", "Engine used for rendering textures");
+
+ EditorGUILayout.Space();
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField(content);
+ EditorGUILayout.EndHorizontal();
+ }
+
+ ///
+ /// Draws a hyperlink label that should redirect the user to a URL.
+ ///
+ /// Label text.
+ /// Redirect URL.
+ private void DrawClickableText(string text, GUIStyle style, Action callback)
+ {
+ var labelRect = EditorGUILayout.GetControlRect();
+
+ if (Event.current.type == EventType.MouseUp && labelRect.Contains(Event.current.mousePosition))
+ callback();
+
+ GUI.Label(labelRect, text, style);
+ }
+
+ private void DrawTextLinksAndAbout()
+ {
+ var textStyle = new GUIStyle();
+ textStyle.normal.textColor = new Color(75f / 255f, 122f / 255f, 243f / 255f);
+ textStyle.alignment = TextAnchor.LowerLeft;
+ textStyle.fixedWidth = 150;
+
+ EditorGUILayout.Space();
+
+ GUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.Space(10, false);
+
+ if (GUILayout.Button(Contents.SubstanceAssetsIcon, Styles.AssetButtonsStyle))
+ Application.OpenURL(SubstanceAssetURL);
+
+ DrawClickableText("Substance 3D assets", textStyle, () => Application.OpenURL(SubstanceAssetURL));
+ }
+ GUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+
+ GUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.Space(10, false);
+
+ if (GUILayout.Button(Contents.SubstanceCommunityIcon, Styles.AssetButtonsStyle))
+ Application.OpenURL(SubstanceCommunityURL);
+
+ DrawClickableText("Substance 3D community assets", textStyle, () => Application.OpenURL(SubstanceCommunityURL));
+ }
+ GUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+
+ GUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.Space(40, false);
+ DrawClickableText("About", textStyle, () => Extensions.DrawAboutWindow());
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ #region Registration
+
+ [SettingsProvider]
+ public static SettingsProvider CreateSubstanceSettingsProvider()
+ {
+ if (SubstanceEditorSettingsSO.IsSettingsAvailable())
+ {
+ return new SubstanceEditorSettingsProvider("Project/Adobe Substance 3D", SettingsScope.Project)
+ {
+ label = "Adobe Substance 3D",
+ keywords = GetSearchKeywordsFromGUIContentProperties()
+ };
+ }
+
+ return null;
+ }
+
+ #endregion Registration
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs.meta
new file mode 100644
index 0000000..b98db8c
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsProvider.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4e36266595fde1a47b3add3f8a295cfe
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs
new file mode 100644
index 0000000..772cd5a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs
@@ -0,0 +1,59 @@
+using Adobe.Substance;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor.ProjectSettings
+{
+ ///
+ /// Global editor settings scriptable object
+ ///
+ internal class SubstanceEditorSettingsSO : ScriptableObject
+ {
+ private static string _editorSettingsAsset => $"{PathUtils.SubstanceRootPath}/Editor/Settings/SubstanceEditorSettings.asset";
+
+ [SerializeField]
+ private bool _generateAllTexture;
+
+ [SerializeField]
+ private Vector2Int _targetResolution;
+
+ internal static SubstanceEditorSettingsSO GetOrCreateSettings()
+ {
+ var settings = AssetDatabase.LoadAssetAtPath(_editorSettingsAsset);
+
+ if (settings == null)
+ {
+ settings = ScriptableObject.CreateInstance();
+ settings._generateAllTexture = false;
+ settings._targetResolution = new Vector2Int(9, 9);
+ AssetDatabase.CreateAsset(settings, _editorSettingsAsset);
+ AssetDatabase.SaveAssets();
+ }
+
+ return settings;
+ }
+
+ public static Vector2Int TextureOutputResultion()
+ {
+ var settigns = GetOrCreateSettings();
+ return settigns._targetResolution;
+ }
+
+ public static bool GenerateAllTextures()
+ {
+ var settigns = GetOrCreateSettings();
+ return settigns._generateAllTexture;
+ }
+
+ public static bool IsSettingsAvailable()
+ {
+ return File.Exists(_editorSettingsAsset);
+ }
+
+ internal static SerializedObject GetSerializedSettings()
+ {
+ return new SerializedObject(GetOrCreateSettings());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs.meta
new file mode 100644
index 0000000..6af3dc5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Project Settings Editor/SubstanceEditorSettingsSO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 715e7c131b0ebdd48b77c2b2741d1dae
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers.meta
new file mode 100644
index 0000000..bd8a8fc
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 846e54def7465614e9af6ed817c28f6a
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs
new file mode 100644
index 0000000..700c163
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs
@@ -0,0 +1,61 @@
+using Adobe.Substance;
+using UnityEditor;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawer
+ {
+ public static bool DrawInput(SerializedProperty property, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ switch (content.Description.Type)
+ {
+ case SubstanceValueType.Float:
+ return SubstanceInputDrawerFloat.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Float2:
+ return SubstanceInputDrawerFloat2.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Float3:
+ return SubstanceInputDrawerFloat3.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Float4:
+ return SubstanceInputDrawerFloat4.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Int:
+ return SubstanceInputDrawerInt.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Int2:
+ return SubstanceInputDrawerInt2.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.Int3:
+ return SubstanceInputDrawerInt3.DrawInput(content.DataProp, content, handler, inputID); ;
+
+ case SubstanceValueType.Int4:
+ return SubstanceInputDrawerInt4.DrawInput(property, content, handler, inputID);
+
+ case SubstanceValueType.Image:
+ return SubstanceInputDrawerTexture.DrawInput(content.DataProp, content, handler, inputID);
+
+ case SubstanceValueType.String:
+ return SubstanceInputDrawerString.DrawInput(content.DataProp, content, handler, inputID);
+
+ default:
+ return DrawDefault(property, content);
+ }
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content)
+ {
+ if (content.Description.WidgetType == SubstanceWidgetType.NoWidget)
+ {
+ EditorGUILayout.LabelField($"Hidden property.");
+ return false;
+ }
+
+ EditorGUI.indentLevel++;
+ EditorGUILayout.LabelField($"Not supported. Value with widget {content.Description.WidgetType}");
+ EditorGUI.indentLevel--;
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs.meta
new file mode 100644
index 0000000..56a7a20
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawer.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 291115c592a8ea648812908d840ceb8d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs
new file mode 100644
index 0000000..ca22774
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs
@@ -0,0 +1,67 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerFloat
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ float newValue;
+ bool changed = false;
+
+ switch (content.Description.WidgetType)
+ {
+ case SubstanceWidgetType.Slider:
+ changed = DrawSlider(valueProperty, content as SubstanceFloatGUIContent, out newValue);
+ break;
+
+ default:
+ changed = DrawDefault(valueProperty, content, out newValue);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputFloat(inputID, newValue);
+
+ return changed;
+ }
+
+ private static bool DrawSlider(SerializedProperty valueProperty, SubstanceFloatGUIContent content, out float newValue)
+ {
+ var floatInputDesc = content.NumericalDescription;
+
+ var maxValue = floatInputDesc.MaxValue;
+ var minValue = floatInputDesc.MinValue;
+ var sliderClamp = maxValue != minValue;
+
+ var oldValue = valueProperty.floatValue;
+
+ newValue = EditorGUILayout.Slider(content, oldValue, sliderClamp ? minValue : 0, sliderClamp ? maxValue : 50);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.floatValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out float newValue)
+ {
+ var oldValue = valueProperty.floatValue;
+ newValue = EditorGUILayout.FloatField(content, oldValue);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.floatValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs.meta
new file mode 100644
index 0000000..5a3673e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 033dbc14304ac024da91e3803dfab82f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs
new file mode 100644
index 0000000..c021615
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs
@@ -0,0 +1,43 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerFloat2
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Vector2 newValue;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ default:
+ changed = DrawDefault(valueProperty, content, out newValue);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputFloat2(inputID, newValue);
+
+ return changed;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector2 newValue)
+ {
+ bool result = false;
+
+ var previewValue = valueProperty.vector2Value;
+ newValue = EditorGUILayout.Vector2Field(content, previewValue);
+
+ if (newValue != previewValue)
+ {
+ valueProperty.vector2Value = newValue;
+ result = true;
+ }
+
+ return result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs.meta
new file mode 100644
index 0000000..3182a14
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: a184eff873fa9f04a9cb3c6e7a45656c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs
new file mode 100644
index 0000000..a3bb390
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs
@@ -0,0 +1,70 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerFloat3
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Vector3 newValue;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ case SubstanceWidgetType.Color:
+ changed = DrawColorPicker(valueProperty, content, out newValue);
+ break;
+
+ default:
+ changed = DrawDefault(valueProperty, content, out newValue);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputFloat3(inputID, newValue);
+
+ return changed;
+ }
+
+ ///
+ /// Renders custome GUI for input float3 as color.
+ ///
+ /// GUI position rect.
+ /// Value property.
+ /// GUI content.
+ /// Description for the target input.
+ private static bool DrawColorPicker(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector3 newValue)
+ {
+ var previewValue = valueProperty.vector3Value;
+
+ var color = new Color(previewValue.x, previewValue.y, previewValue.z, 1);
+ var newColor = EditorGUILayout.ColorField(content, color, false, false, false);
+ newValue = new Vector3();
+
+ if (color != newColor)
+ {
+ newValue = new Vector4(newColor.r, newColor.g, newColor.b, newColor.a);
+ valueProperty.vector3Value = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector3 newValue)
+ {
+ var previewValue = valueProperty.vector3Value;
+ newValue = EditorGUILayout.Vector3Field(content, previewValue);
+
+ if (newValue != previewValue)
+ {
+ valueProperty.vector3Value = newValue;
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs.meta
new file mode 100644
index 0000000..f30a53d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dd7292cd00c740040b07a24e3f49ac8f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs
new file mode 100644
index 0000000..81a60f7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs
@@ -0,0 +1,68 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerFloat4
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Vector4 newValyue;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ case SubstanceWidgetType.Color:
+ changed = DrawColorPicker(valueProperty, content, out newValyue);
+ break;
+
+ default:
+ changed = DrawDefault(valueProperty, content, out newValyue);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputFloat4(inputID, newValyue);
+
+ return changed;
+ }
+
+ ///
+ /// Renders custome GUI for input float4 as color.
+ ///
+ /// GUI position rect.
+ /// Value property.
+ /// GUI content.
+ /// Description for the target input.
+ private static bool DrawColorPicker(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector4 newValue)
+ {
+ var previewValue = valueProperty.vector4Value;
+
+ var color = new Vector4(previewValue.x, previewValue.y, previewValue.z, previewValue.w);
+ newValue = EditorGUILayout.ColorField(content, color);
+
+ if (color != newValue)
+ {
+ valueProperty.vector4Value = new Vector4(newValue.x, newValue.y, newValue.z, newValue.w);
+ return true;
+ }
+
+ return false;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector4 newValue)
+ {
+ var oldValue = valueProperty.vector4Value;
+ newValue = EditorGUILayout.Vector4Field(content, oldValue);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.vector4Value = newValue;
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs.meta
new file mode 100644
index 0000000..ebe62e4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerFloat4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b864e9955ea52c1439bd7a5e691c3e75
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs
new file mode 100644
index 0000000..90c07d5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs
@@ -0,0 +1,194 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// Drawer helper for int substance inputs.
+ ///
+ internal static class SubstanceInputDrawerInt
+ {
+ ///
+ /// Draws int input.
+ ///
+ ///
+ ///
+ /// True if value changed.
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ int value;
+ bool changed;
+
+ if (content.Description.Label == "$randomseed")
+ {
+ changed = DrawRandomSeedButton(valueProperty, content, out value);
+ }
+ else
+ {
+ switch (content.Description.WidgetType)
+ {
+ case SubstanceWidgetType.ToggleButton:
+ changed = DrawToggleButton(valueProperty, content as SubstanceIntGUIContent, out value);
+ break;
+
+ case SubstanceWidgetType.Slider:
+ changed = DrawSlider(valueProperty, content as SubstanceIntGUIContent, out value);
+ break;
+
+ case SubstanceWidgetType.ComboBox:
+ changed = DrawComboBox(valueProperty, content as SubstanceIntGUIContent, out value);
+ break;
+
+ default:
+ changed = DrawDefault(valueProperty, content, out value);
+ break;
+ }
+ }
+
+ if (changed)
+ handler.SetInputInt(inputID, value);
+
+ return changed;
+ }
+
+ ///
+ /// Renders the int input as a toggle button.
+ ///
+ /// Value property.
+ /// GUI content.
+ /// True if value changed.
+ private static bool DrawToggleButton(SerializedProperty valueProperty, SubstanceIntGUIContent content, out int newValue)
+ {
+ newValue = 0;
+ var oldValue = valueProperty.intValue != 0;
+ var newValueToggle = EditorGUILayout.Toggle(content, oldValue);
+
+ if (oldValue != newValueToggle)
+ {
+ newValue = newValueToggle ? 1 : 0;
+ valueProperty.intValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Renders the int input as a slider.
+ ///
+ /// Value property.
+ /// GUI content.
+ /// True if value changed.
+ private static bool DrawSlider(SerializedProperty valueProperty, SubstanceIntGUIContent content, out int newValue)
+ {
+ var numDescription = content.NumericalDescription;
+
+ var maxValue = numDescription.MaxValue;
+ var minValue = numDescription.MinValue;
+
+ var oldValue = valueProperty.intValue;
+ newValue = EditorGUILayout.IntSlider(content, oldValue, minValue, maxValue);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.intValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Renders the int input as combo box.
+ ///
+ /// Value property.
+ /// GUI content.
+ /// True if value changed.
+ private static bool DrawComboBox(SerializedProperty valueProperty, SubstanceIntGUIContent content, out int newValue)
+ {
+ var specializedContent = content as SubstanceIntComboBoxGUIContent;
+
+ var oldValue = valueProperty.intValue;
+ newValue = EditorGUILayout.IntPopup(content, oldValue, specializedContent.EnumValuesGUI, specializedContent.EnumValues);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.intValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Default input render.
+ ///
+ /// Value property.
+ /// GUI content.
+ /// True if value changed.
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out int newValue)
+ {
+ var oldValue = valueProperty.intValue;
+ newValue = EditorGUILayout.IntField(content, oldValue);
+
+ if (oldValue != newValue)
+ {
+ valueProperty.intValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ ///
+ /// Draws the random seed button.
+ ///
+ /// Value property.
+ /// GUI content.
+ /// True if value changed.
+ private static bool DrawRandomSeedButton(SerializedProperty valueProperty, SubstanceInputGUIContent content, out int newValue)
+ {
+ bool result = false;
+
+ newValue = valueProperty.intValue;
+ int minimum = 0;
+ int maximum = 10000;
+
+ int labelWidth = (int)EditorGUIUtility.labelWidth - 15;
+ int fieldWidth = 50;
+
+ content.text = "Random Seed";
+ content.tooltip = "$randomseed: the overall random aspect of the texture";
+
+ GUILayout.BeginHorizontal();
+ {
+ int buttonWidth = (int)EditorGUIUtility.currentViewWidth - labelWidth - fieldWidth - 60;
+
+ EditorGUILayout.LabelField(content, GUILayout.Width(labelWidth), GUILayout.ExpandWidth(true));
+
+ if (GUILayout.Button("Randomize", GUILayout.Width(buttonWidth)))
+ {
+ newValue = UnityEngine.Random.Range(minimum, maximum);
+ valueProperty.intValue = newValue;
+ result = true;
+ }
+
+ EditorGUI.BeginChangeCheck();
+
+ newValue = EditorGUILayout.IntField(newValue, GUILayout.Width(fieldWidth));
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ newValue = (newValue < minimum) ? minimum : (newValue > maximum) ? maximum : newValue;
+ valueProperty.intValue = newValue;
+ result = true;
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ return result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs.meta
new file mode 100644
index 0000000..41d6c20
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 91b2fc4c484fa3f48804e6352c3d51d8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs
new file mode 100644
index 0000000..c221e94
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs
@@ -0,0 +1,95 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerInt2
+ {
+ private static readonly string[] _resulutions = { "256", "512", "1024", "2048", "4096" };
+
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Vector2Int newValue;
+ bool changed;
+
+ if (IsSizeAttribute(content))
+ {
+ changed = DrawResolutionSelection(valueProperty, content, out newValue);
+ }
+ else
+ {
+ changed = DrawDefault(valueProperty, content, out newValue);
+ }
+
+ if (changed)
+ handler.SetInputInt2(inputID, newValue);
+
+ return changed;
+ }
+
+ private static bool DrawResolutionSelection(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector2Int newValue)
+ {
+ Vector2Int oldValue = valueProperty.vector2IntValue;
+ var currentIndex = GetEnumIndex(oldValue);
+ int newIndex = EditorGUILayout.Popup("Output Resolution", currentIndex, _resulutions);
+
+ if (currentIndex != newIndex)
+ {
+ newValue = GetValueFromIndex(newIndex);
+ valueProperty.vector2IntValue = newValue;
+ return true;
+ }
+
+ newValue = new Vector2Int();
+ return false;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector2Int newValue)
+ {
+ Vector2Int oldValue = valueProperty.vector2IntValue;
+ newValue = EditorGUILayout.Vector2IntField(content, oldValue);
+
+ if (newValue != oldValue)
+ {
+ valueProperty.vector2IntValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+
+ private static bool IsSizeAttribute(GUIContent content)
+ {
+ return content.text == "$outputsize";
+ }
+
+ private static int GetEnumIndex(Vector2Int data)
+ {
+ switch (data.x)
+ {
+ case 8: return 0;
+ case 9: return 1;
+ case 10: return 2;
+ case 11: return 3;
+ case 12: return 4;
+ default:
+ return 0;
+ }
+ }
+
+ private static Vector2Int GetValueFromIndex(int index)
+ {
+ switch (index)
+ {
+ case 0: return new Vector2Int(8, 8);
+ case 1: return new Vector2Int(9, 9);
+ case 2: return new Vector2Int(10, 10);
+ case 3: return new Vector2Int(11, 11);
+ case 4: return new Vector2Int(12, 12);
+ default:
+ return new Vector2Int(8, 8);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs.meta
new file mode 100644
index 0000000..1de4749
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 17a55141ccae8494f8ea0e29affd3a9b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs
new file mode 100644
index 0000000..c91bfa7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs
@@ -0,0 +1,41 @@
+using UnityEditor;
+using UnityEngine;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerInt3
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Vector3Int newValue;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ default:
+ changed = DrawDefault(valueProperty, content, out newValue);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputInt3(inputID, newValue);
+
+ return changed;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Vector3Int newValue)
+ {
+ var previewValue = valueProperty.vector3IntValue;
+ newValue = EditorGUILayout.Vector3IntField(content, previewValue);
+
+ if (newValue != previewValue)
+ {
+ valueProperty.vector3IntValue = newValue;
+ return true;
+ }
+
+ return false;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs.meta
new file mode 100644
index 0000000..272cb60
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7c99f44dae8ff5f4097e558c6f881451
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs
new file mode 100644
index 0000000..c26a4a1
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs
@@ -0,0 +1,211 @@
+using UnityEditor;
+using Adobe.Substance;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerInt4
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ int value0;
+ int value1;
+ int value2;
+ int value3;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ case SubstanceWidgetType.Slider:
+ changed = DrawSliderWidget(valueProperty, content as SubstanceInt4GUIContent, out value0, out value1, out value2, out value3);
+ break;
+
+ case SubstanceWidgetType.Color:
+ changed = DrawColorWidget(valueProperty, content as SubstanceInt4GUIContent, out value0, out value1, out value2, out value3);
+ break;
+ //TODO: Add edge cases here.
+ default:
+ changed = DrawDefault(valueProperty, content as SubstanceInt4GUIContent, out value0, out value1, out value2, out value3);
+ break;
+ }
+
+ if (changed)
+ handler.SetInputInt4(inputID, value0, value1, value2, value3);
+
+ return changed;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInt4GUIContent content, out int newValue0, out int newValue1, out int newValue2, out int newValue3)
+ {
+ bool result = false;
+
+ var value0 = valueProperty?.FindPropertyRelative("Data0");
+ var value1 = valueProperty?.FindPropertyRelative("Data1");
+ var value2 = valueProperty?.FindPropertyRelative("Data2");
+ var value3 = valueProperty?.FindPropertyRelative("Data3");
+
+ var previewValue0 = value0.intValue;
+ var previewValue1 = value1.intValue;
+ var previewValue2 = value2.intValue;
+ var previewValue3 = value3.intValue;
+
+ newValue0 = EditorGUILayout.IntField(content, previewValue0);
+ newValue1 = EditorGUILayout.IntField(content, previewValue1);
+ newValue2 = EditorGUILayout.IntField(content, previewValue2);
+ newValue3 = EditorGUILayout.IntField(content, previewValue3);
+
+ if (newValue0 != previewValue0)
+ {
+ value0.intValue = newValue0;
+ result = true;
+ }
+
+ if (newValue1 != previewValue1)
+ {
+ value1.intValue = newValue1;
+ result = true;
+ }
+
+ if (newValue2 != previewValue2)
+ {
+ value2.intValue = newValue2;
+ result = true;
+ }
+
+ if (newValue3 != previewValue3)
+ {
+ value3.intValue = newValue3;
+ result = true;
+ }
+
+ return result;
+ }
+
+ private static bool DrawSliderWidget(SerializedProperty valueProperty, SubstanceInt4GUIContent content, out int newValue0, out int newValue1, out int newValue2, out int newValue3)
+ {
+ bool result = false;
+
+ int rightValue0 = 100;
+ int rightValue1 = 100;
+ int rightValue2 = 100;
+ int rightValue3 = 100;
+
+ int leftValue0 = 0;
+ int leftValue1 = 0;
+ int leftValue2 = 0;
+ int leftValue3 = 0;
+
+ var int4NumbericalDescription = content.NumericalDescription;
+
+ if (int4NumbericalDescription != null)
+ {
+ leftValue0 = int4NumbericalDescription.MinValue0;
+ leftValue1 = int4NumbericalDescription.MinValue1;
+ leftValue2 = int4NumbericalDescription.MinValue2;
+ leftValue3 = int4NumbericalDescription.MinValue3;
+
+ rightValue0 = int4NumbericalDescription.MaxValue0;
+ rightValue1 = int4NumbericalDescription.MaxValue1;
+ rightValue2 = int4NumbericalDescription.MaxValue2;
+ rightValue3 = int4NumbericalDescription.MaxValue3;
+ }
+
+ var value0 = valueProperty?.FindPropertyRelative("Data0");
+ var value1 = valueProperty?.FindPropertyRelative("Data1");
+ var value2 = valueProperty?.FindPropertyRelative("Data2");
+ var value3 = valueProperty?.FindPropertyRelative("Data3");
+
+ var previewValue0 = value0.intValue;
+ var previewValue1 = value1.intValue;
+ var previewValue2 = value2.intValue;
+ var previewValue3 = value3.intValue;
+
+ newValue0 = EditorGUILayout.IntSlider(content, previewValue0, leftValue0, rightValue0);
+ newValue1 = EditorGUILayout.IntSlider(content, previewValue1, leftValue1, rightValue1);
+ newValue2 = EditorGUILayout.IntSlider(content, previewValue2, leftValue2, rightValue2);
+ newValue3 = EditorGUILayout.IntSlider(content, previewValue3, leftValue3, rightValue3);
+
+ if (newValue0 != previewValue0)
+ {
+ value0.intValue = newValue0;
+ result = true;
+ }
+
+ if (newValue1 != previewValue1)
+ {
+ value1.intValue = newValue1;
+ result = true;
+ }
+
+ if (newValue2 != previewValue2)
+ {
+ value2.intValue = newValue2;
+ result = true;
+ }
+
+ if (newValue3 != previewValue3)
+ {
+ value3.intValue = newValue3;
+ result = true;
+ }
+
+ return result;
+ }
+
+ private static bool DrawColorWidget(SerializedProperty valueProperty, SubstanceInt4GUIContent content, out int newValue0, out int newValue1, out int newValue2, out int newValue3)
+ {
+ bool result = false;
+
+ var value0 = valueProperty?.FindPropertyRelative("Data0");
+ var value1 = valueProperty?.FindPropertyRelative("Data1");
+ var value2 = valueProperty?.FindPropertyRelative("Data2");
+ var value3 = valueProperty?.FindPropertyRelative("Data3");
+
+ var previewValue0 = value0.intValue;
+ var previewValue1 = value1.intValue;
+ var previewValue2 = value2.intValue;
+ var previewValue3 = value3.intValue;
+
+ var floatValue0 = ((float)previewValue0) / 255f;
+ var floatValue1 = ((float)previewValue1) / 255f;
+ var floatValue2 = ((float)previewValue2) / 255f;
+ var floatValue3 = ((float)previewValue3) / 255f;
+
+ Color color = new Color(floatValue0, floatValue1, floatValue2, floatValue3);
+
+ var newColor = EditorGUILayout.ColorField(content, color);
+
+ newValue0 = (int)newColor.r * 255;
+ newValue1 = (int)newColor.g * 255;
+ newValue2 = (int)newColor.b * 255;
+ newValue3 = (int)newColor.a * 255;
+
+ if (newValue0 != previewValue0)
+ {
+ value0.intValue = newValue0;
+ result = true;
+ }
+
+ if (newValue1 != previewValue1)
+ {
+ value1.intValue = newValue1;
+ result = true;
+ }
+
+ if (newValue2 != previewValue2)
+ {
+ value2.intValue = newValue2;
+ result = true;
+ }
+
+ if (newValue3 != previewValue3)
+ {
+ value3.intValue = newValue3;
+ result = true;
+ }
+
+ return result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs.meta
new file mode 100644
index 0000000..0131830
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerInt4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6083c230932064544b0beca8c8228f62
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs
new file mode 100644
index 0000000..4fb6060
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs
@@ -0,0 +1,35 @@
+using UnityEditor;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerString
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ default:
+ changed = DrawDefault(valueProperty, content);
+ break;
+ }
+
+ if (changed)
+ {
+ var stringValue = valueProperty.stringValue;
+ handler.SetInputString(inputID, stringValue);
+ }
+
+ return changed;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content)
+ {
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.PropertyField(valueProperty, content);
+ return EditorGUI.EndChangeCheck();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs.meta
new file mode 100644
index 0000000..4e278bd
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerString.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1ac347008a541b247a481fafa2196b14
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs
new file mode 100644
index 0000000..6b4f797
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs
@@ -0,0 +1,61 @@
+using Adobe.Substance;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceInputDrawerTexture
+ {
+ public static bool DrawInput(SerializedProperty valueProperty, SubstanceInputGUIContent content, SubstanceNativeGraph handler, int inputID)
+ {
+ Texture2D newValue;
+ bool changed;
+
+ switch (content.Description.WidgetType)
+ {
+ default:
+ changed = DrawDefault(valueProperty, content, out newValue);
+ break;
+ }
+
+ if (changed)
+ {
+ if (newValue != null)
+ {
+ var pixels = newValue.GetPixels32();
+ handler.SetInputTexture2D(inputID, pixels, newValue.width, newValue.height);
+ }
+ else
+ {
+ handler.SetInputTexture2DNull(inputID);
+ }
+ }
+
+ return changed;
+ }
+
+ private static bool DrawDefault(SerializedProperty valueProperty, SubstanceInputGUIContent content, out Texture2D newValue)
+ {
+ EditorGUI.BeginChangeCheck();
+ EditorGUILayout.ObjectField(valueProperty, content);
+ var changed = EditorGUI.EndChangeCheck();
+ newValue = null;
+
+ if (changed)
+ {
+ if (valueProperty.objectReferenceValue != null)
+ {
+ newValue = valueProperty.objectReferenceValue as Texture2D;
+
+ if (newValue != null)
+ {
+ if (!newValue.isReadable)
+ TextureUtils.SetReadableFlag(newValue, true);
+ }
+ }
+ }
+
+ return changed;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs.meta
new file mode 100644
index 0000000..c889de9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/PropertyDrawers/SubstanceInputDrawerTexture.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 07aca6dfe5b18924ba359d2f53a2ac34
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs
new file mode 100644
index 0000000..60ecd0d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs
@@ -0,0 +1,824 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using UnityEditor;
+using UnityEngine;
+
+using Adobe.Substance.Input;
+using Adobe.SubstanceEditor.Importer;
+using Adobe.SubstanceEditor.ProjectSettings;
+using Adobe.Substance;
+using UnityEditor.SceneManagement;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// Editor Singleton to manage interactions with the Substance engine.
+ ///
+ internal sealed class SubstanceEditorEngine : ScriptableSingleton
+ {
+ ///
+ /// Substance files currently loaded in the engine.
+ ///
+ private readonly Dictionary _activeSubstanceDictionary = new Dictionary();
+
+ ///
+ /// Currently active instances.
+ ///
+ private readonly List _managedInstances = new List();
+
+ private readonly Queue _delayiedInitilization = new Queue();
+
+ ///
+ /// Render results generated by the substance engine in a background thread.
+ ///
+ private readonly ConcurrentQueue _renderResultsQueue = new ConcurrentQueue();
+
+ private readonly List _playmodeObjects = new List();
+
+ private readonly Queue _creationQueue = new Queue();
+
+ private class DelayAssetCreationInfo
+ {
+ public SubstanceGraphSO InstanceAsset;
+ public string InstancePath;
+
+ public DelayAssetCreationInfo(SubstanceGraphSO instanceAsset, string instancePath)
+ {
+ InstanceAsset = instanceAsset;
+ InstancePath = instancePath;
+ }
+ }
+
+ internal void DelayAssetCreation(SubstanceGraphSO instanceAsset, string instancePath)
+ {
+ _creationQueue.Enqueue(new DelayAssetCreationInfo(instanceAsset, instancePath));
+ }
+
+ private bool _resetAllInputs = false;
+
+ ///
+ /// Initializer to ensure SubstanceEditorEngine is
+ /// started consistently on editor load and assembly reload.
+ ///
+ [InitializeOnLoad]
+ private sealed class SubstanceEditorEngineInitializer
+ {
+ static SubstanceEditorEngineInitializer()
+ {
+ AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload;
+ AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload;
+ }
+
+ private static void OnBeforeAssemblyReload()
+ {
+ SubstanceEditorEngine.instance.TearDown();
+ }
+
+ private static void OnAfterAssemblyReload()
+ {
+ SubstanceEditorEngine.instance.Setup();
+ }
+ }
+
+ private static Queue> _delayMoveOperation = new Queue>();
+
+ internal void PushMoveOperation(string from, string to)
+ {
+ _delayMoveOperation.Enqueue(new Tuple(from, to));
+ }
+
+ private bool _isLoaded;
+
+ public bool IsInitialized => _isLoaded;
+
+ ///
+ /// Initalize substance engine.
+ ///
+ private void Setup()
+ {
+ _isLoaded = false;
+ PluginPipelines.GetCurrentPipelineInUse();
+ var enginePath = PlatformUtils.GetEnginePath();
+ var pluginPath = PlatformUtils.GetPluginPath();
+ Engine.Initialize(pluginPath, enginePath);
+ EditorApplication.update += Update;
+ EditorApplication.quitting += OnQuit;
+ Undo.undoRedoPerformed += UndoCallback;
+ }
+
+ private void UndoCallback()
+ {
+ if (Selection.activeObject is SubstanceGraphSO)
+ {
+ var target = Selection.activeObject as SubstanceGraphSO;
+
+ var managedInstance = _managedInstances.FirstOrDefault((a) => a.GUID == target.GUID);
+
+ if (managedInstance != null)
+ {
+ managedInstance.RenderTextures = true;
+ PushAllInputsToUpdate();
+ }
+ }
+ }
+
+ ///
+ /// Shutdown substance engine.
+ ///
+ private void TearDown()
+ {
+ _isLoaded = false;
+ EditorApplication.update -= Update;
+ EditorApplication.quitting -= OnQuit;
+ Undo.undoRedoPerformed -= UndoCallback;
+ Engine.Shutdown();
+ }
+
+ private void OnQuit()
+ {
+ //Check if there are pending updates. If there is, we need to do them synchronously.
+ foreach (var graph in _managedInstances)
+ {
+ if (graph == null)
+ continue;
+
+ if (!TryGetHandlerFromInstance(graph, out SubstanceNativeGraph substanceHandler))
+ continue;
+
+ if (substanceHandler.InRenderWork)
+ continue;
+
+ if (graph.RenderTextures)
+ {
+ var renderResult = substanceHandler.Render();
+ graph.UpdateAssociatedAssets(renderResult, true);
+ }
+ }
+ }
+
+ #region Update
+
+ ///
+ /// Editor update.
+ ///
+ private void Update()
+ {
+ if (!_isLoaded)
+ {
+ LoadAllSbsarFiles();
+ _isLoaded = true;
+ }
+
+ _managedInstances.RemoveAll(item => item == null);
+
+ CheckDelayedMove();
+ HandleAssetCreation();
+ HandleDelayedInitialization();
+ HandlePlaymode();
+ CheckUIUpdate();
+ CheckRenderResultsUpdates();
+ }
+
+ private void CheckDelayedMove()
+ {
+ while (_delayMoveOperation.Count != 0)
+ {
+ var newMove = _delayMoveOperation.Dequeue();
+
+ var substanceInstance = AssetDatabase.LoadAssetAtPath(newMove.Item2);
+
+ if (substanceInstance != null)
+ {
+ substanceInstance.Move(newMove.Item2);
+ }
+ }
+ }
+
+ private void HandleAssetCreation()
+ {
+ while (_creationQueue.Count != 0)
+ {
+ var creationData = _creationQueue.Dequeue();
+
+ if (creationData == null)
+ continue;
+
+ if (creationData.InstanceAsset == null)
+ continue;
+
+ var oldAsset = AssetDatabase.LoadAssetAtPath(creationData.InstancePath);
+
+ AssetDatabase.CreateAsset(creationData.InstanceAsset, creationData.InstancePath);
+
+ var createAsset = AssetDatabase.LoadAssetAtPath(creationData.InstancePath);
+ var importer = AssetImporter.GetAtPath(createAsset.AssetPath) as SubstanceImporter;
+ EditorUtility.SetDirty(importer);
+ AssetDatabase.Refresh();
+ SubmitAsyncRenderWorkBatch(new List { creationData.InstanceAsset });
+ }
+ }
+
+ private void HandleDelayedInitialization()
+ {
+ while (_delayiedInitilization.Count != 0)
+ {
+ var instancePath = _delayiedInitilization.Dequeue();
+ var materialInstance = AssetDatabase.LoadAssetAtPath(instancePath);
+ _managedInstances.Add(materialInstance);
+ }
+ }
+
+ private bool _onPlaymodeEnterHandled = false;
+
+ private void HandlePlaymode()
+ {
+ if (EditorApplication.isPlaying && !_onPlaymodeEnterHandled)
+ {
+ var runtiemMaterials = GameObject.FindObjectsOfType();
+
+ foreach (var graph in _managedInstances)
+ {
+ bool isAssigned = runtiemMaterials.FirstOrDefault(a => a.GraphSO == graph) != null;
+
+ if (Application.IsPlaying(graph) && (isAssigned || graph.IsRuntimeOnly))
+ {
+ if (!_playmodeObjects.Contains(graph))
+ _playmodeObjects.Add(graph);
+ }
+ }
+
+ _onPlaymodeEnterHandled = true;
+ }
+
+ if (!EditorApplication.isPlaying && _onPlaymodeEnterHandled)
+ {
+ var objectsToRemove = new List();
+
+ foreach (var playmodeObject in _playmodeObjects)
+ {
+ if (!Application.IsPlaying(playmodeObject))
+ {
+ playmodeObject.RenderTextures = true;
+ objectsToRemove.Add(playmodeObject);
+ }
+ }
+
+ foreach (var item in objectsToRemove)
+ _playmodeObjects.Remove(item);
+
+ _onPlaymodeEnterHandled = false;
+ }
+ }
+
+ ///
+ /// Updated the state of the SubstanceFileHandlers based on changes made in the graph objects.
+ ///
+ private void CheckUIUpdate()
+ {
+ foreach (var graph in _managedInstances)
+ {
+ if (graph == null)
+ continue;
+
+ if (graph.RawData == null)
+ {
+ var assets = AssetDatabase.LoadAllAssetsAtPath(graph.AssetPath);
+
+ if (assets == null)
+ continue;
+
+ var dataObject = assets.FirstOrDefault(a => a is SubstanceFileRawData) as SubstanceFileRawData;
+
+ graph.RawData = dataObject;
+ EditorUtility.SetDirty(graph);
+ AssetDatabase.Refresh();
+ }
+
+ if (!TryGetHandlerFromInstance(graph, out SubstanceNativeGraph substanceHandler))
+ continue;
+
+ if (substanceHandler.InRenderWork)
+ continue;
+
+ if (graph.IsRuntimeOnly && graph.OutputMaterial != null)
+ if (graph.OutputMaterial.GetTexture("_MainTex") == null)
+ MaterialUtils.AssignOutputTexturesToMaterial(graph);
+
+ if (HasMaterialShaderChanged(graph))
+ {
+ SubmitAsyncRenderWork(substanceHandler, graph, true);
+ graph.RenderTextures = true;
+ continue;
+ }
+
+ if (graph.OutputRemaped)
+ {
+ graph.OutputRemaped = false;
+
+ if (graph.IsRuntimeOnly)
+ {
+ DeleteGeneratedTextures(graph);
+ }
+
+ RenderingUtils.UpdateAlphaChannelsAssignment(substanceHandler, graph);
+ SubmitAsyncRenderWork(substanceHandler, graph, true);
+ graph.RenderTextures = true;
+ continue;
+ }
+
+ if (graph.RenderTextures)
+ {
+ graph.RenderTextures = false;
+
+ if (_resetAllInputs)
+ {
+ _resetAllInputs = true;
+
+ foreach (var input in graph.Input)
+ {
+ input.UpdateNativeHandle(substanceHandler);
+ }
+ }
+
+ SubmitAsyncRenderWork(substanceHandler, graph);
+
+ EditorUtility.SetDirty(graph);
+ }
+ }
+ }
+
+ ///
+ /// Updated the render results that are finished by the substance engine
+ ///
+ private void CheckRenderResultsUpdates()
+ {
+ if (_renderResultsQueue.TryDequeue(out RenderResult renderResult))
+ {
+ SubstanceGraphSO graph = _managedInstances.FirstOrDefault(a => a.GUID == renderResult.GUID);
+
+ if (graph == null)
+ return;
+
+ if (!TryGetHandlerFromInstance(graph, out SubstanceNativeGraph handler))
+ return;
+
+ var textureReassigned = graph.UpdateAssociatedAssets(renderResult.Result, renderResult.ForceRebuild);
+
+ if (textureReassigned)
+ {
+ if (!string.IsNullOrEmpty(graph.AssetPath))
+ {
+ AssetCreationUtils.CreateMaterialOrUpdateMaterial(graph, graph.Name);
+ EditorUtility.SetDirty(graph);
+ EditorUtility.SetDirty(graph.OutputMaterial);
+ AssetDatabase.Refresh();
+ }
+ }
+ else
+ {
+ if (graph.OutputMaterial == null)
+ {
+ AssetCreationUtils.CreateMaterialOrUpdateMaterial(graph, graph.Name);
+ EditorUtility.SetDirty(graph);
+ EditorUtility.SetDirty(graph.OutputMaterial);
+ AssetDatabase.Refresh();
+ }
+ else
+ {
+ EditorUtility.SetDirty(graph.OutputMaterial);
+ }
+ }
+
+ handler.InRenderWork = false;
+ }
+ }
+
+ ///
+ /// Checks if the shaders assigned to the substance graph generated material has changed. If so, we have to change the default outputs.
+ ///
+ private bool HasMaterialShaderChanged(SubstanceGraphSO graph)
+ {
+ if (graph.OutputMaterial == null || string.IsNullOrEmpty(graph.MaterialShader))
+ return false;
+
+ if (graph.OutputMaterial.shader.name == graph.MaterialShader)
+ return false;
+
+ AssetCreationUtils.UpdateMeterialAssignment(graph);
+ return true;
+ }
+
+ #endregion Update
+
+ #region Public methods
+
+ #region Instance Management
+
+ ///
+ /// Loads a sbsar file into the engine. The engine will keep track of this file internally.
+ ///
+ /// Path to a sbsar file.
+ public void InitializeInstance(SubstanceGraphSO substanceInstance, string instancePath, out SubstanceGraphSO matchingInstance)
+ {
+ matchingInstance = null;
+
+ if (substanceInstance == null)
+ return;
+
+ if (string.IsNullOrEmpty(substanceInstance.AssetPath))
+ Debug.LogError("Unable to instantiate substance material with null assetPath.");
+
+ matchingInstance = _managedInstances.FirstOrDefault(a => a.OutputPath.Equals(substanceInstance.OutputPath, StringComparison.OrdinalIgnoreCase));
+
+ if (!_activeSubstanceDictionary.TryGetValue(substanceInstance.GUID, out SubstanceNativeGraph _))
+ {
+ var substanceArchive = Engine.OpenFile(substanceInstance.RawData.FileContent, substanceInstance.GetNativeID());
+ _activeSubstanceDictionary.Add(substanceInstance.GUID, substanceArchive);
+ }
+
+ if (!string.IsNullOrEmpty(instancePath))
+ _delayiedInitilization.Enqueue(instancePath);
+ else
+ {
+ _managedInstances.Add(substanceInstance);
+ }
+ }
+
+ ///
+ /// Unloads the target substance from th e substance engine.
+ ///
+ /// Path to a sbsar file.
+ public void ReleaseInstance(SubstanceGraphSO substanceInstance)
+ {
+ if (TryGetHandlerFromInstance(substanceInstance, out SubstanceNativeGraph substanceArchive))
+ {
+ _activeSubstanceDictionary.Remove(substanceInstance.GUID);
+ substanceArchive.Dispose();
+
+ var managedInstance = _managedInstances.FirstOrDefault((a) => a.GUID == substanceInstance.GUID);
+
+ if (managedInstance != null)
+ _managedInstances.Remove(managedInstance);
+ }
+ }
+
+ public string SerializeCurrentState(SubstanceGraphSO substanceInstance)
+ {
+ if (TryGetHandlerFromInstance(substanceInstance, out SubstanceNativeGraph substanceArchive))
+ return substanceArchive.CreatePresetFromCurrentState();
+
+ return string.Empty;
+ }
+
+ public void SetStateFromSerializedData(SubstanceGraphSO substanceInstance, string data)
+ {
+ if (TryGetHandlerFromInstance(substanceInstance, out SubstanceNativeGraph substanceArchive))
+ substanceArchive.ApplyPreset(data);
+ }
+
+ #endregion Instance Management
+
+ public void PushAllInputsToUpdate()
+ {
+ _resetAllInputs = true;
+ }
+
+ ///
+ /// Loads the list of substance graphs from a substance file.
+ ///
+ /// Path to the target substance file.
+ /// List of substance graph objects.
+ public void CreateGraphObject(SubstanceGraphSO instance, SubstanceGraphSO copy = null)
+ {
+ if (!TryGetHandlerFromInstance(instance, out SubstanceNativeGraph substanceHandle))
+ return;
+
+ if (copy != null)
+ {
+ if (TryGetHandlerFromInstance(copy, out SubstanceNativeGraph copyHandle))
+ {
+ var copyPreset = copyHandle.CreatePresetFromCurrentState();
+ substanceHandle.ApplyPreset(copyPreset); ;
+ }
+ }
+
+ instance.Input = GetGraphInputs(substanceHandle);
+ instance.Output = GetGraphOutputs(substanceHandle);
+ instance.PhysicalSize = substanceHandle.GetPhysicalSize();
+ instance.HasPhysicalSize = instance.PhysicalSize != Vector3.zero;
+
+ RenderingUtils.ConfigureOutputTextures(substanceHandle, instance);
+
+ instance.GenerateAllOutputs = SubstanceEditorSettingsSO.GenerateAllTextures();
+ SetOutputTextureSize(instance, substanceHandle);
+
+ instance.DefaultPreset = substanceHandle.CreatePresetFromCurrentState();
+
+ var thumbnailData = substanceHandle.GetThumbnail();
+
+ if (thumbnailData != null)
+ {
+ instance.Thumbnail = thumbnailData;
+ instance.HasThumbnail = true;
+ }
+ }
+
+ ///
+ /// Renders a substance file using the substance engine.
+ ///
+ /// Path to a sbsar file.
+ /// Target graph index.
+ /// Task that will be finished once the rendering is finished.
+ public void RenderInstanceAsync(SubstanceGraphSO instances)
+ {
+ if (TryGetHandlerFromInstance(instances, out SubstanceNativeGraph substanceArchive))
+ SubmitAsyncRenderWork(substanceArchive, instances);
+ }
+
+ public void RenderInstanceAsync(IReadOnlyList instances)
+ {
+ foreach (var graph in instances)
+ RenderInstanceAsync(graph);
+ }
+
+ ///
+ /// Assigns the substance graph objects inputs to the substance file Handlers associated with them.
+ ///
+ /// Path to the sbsar object.
+ /// List of graph objects.
+ internal void SetSubstanceInput(SubstanceGraphSO instance)
+ {
+ if (TryGetHandlerFromInstance(instance, out SubstanceNativeGraph substanceArchive))
+ {
+ foreach (var input in instance.Input)
+ input.UpdateNativeHandle(substanceArchive);
+ }
+ }
+
+ #region Preset
+
+ ///
+ /// Get the preset XML document for the current state of the a managed substance object.
+ ///
+ /// Path to the target sbsar file.
+ /// Target graph id.
+ /// XML document with the current input states as a preset.
+ public string ExportGraphPresetXML(SubstanceGraphSO instance)
+ {
+ if (!TryGetHandlerFromInstance(instance, out SubstanceNativeGraph substanceArchive))
+ return null;
+
+ return substanceArchive.CreatePresetFromCurrentState();
+ }
+
+ ///
+ /// Loads the inputs from a preset XML document into the target graph of a managed substance file.
+ ///
+ /// Path to the target sbsar file.
+ /// Target graph id.
+ /// Preset XML document.
+ public void LoadPresetsToGraph(SubstanceGraphSO instance, string presetXML)
+ {
+ if (TryGetHandlerFromInstance(instance, out SubstanceNativeGraph substanceHandler))
+ {
+ substanceHandler.ApplyPreset(presetXML);
+
+ instance.Input = GetGraphInputs(substanceHandler);
+ instance.RenderTextures = true;
+ EditorUtility.SetDirty(instance);
+ }
+ }
+
+ #endregion Preset
+
+ #endregion Public methods
+
+ public bool TryGetHandlerFromInstance(SubstanceGraphSO substanceInstance, out SubstanceNativeGraph substanceHandler)
+ {
+ substanceHandler = null;
+
+ if (substanceInstance == null)
+ return false;
+
+ if (!_activeSubstanceDictionary.TryGetValue(substanceInstance.GUID, out substanceHandler))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ public bool TryGetHandlerFromGUI(string guid, out SubstanceNativeGraph substanceHandler)
+ {
+ if (!_activeSubstanceDictionary.TryGetValue(guid, out substanceHandler))
+ return false;
+
+ return true;
+ }
+
+ ///
+ /// Loads all sbsar files currently in the project.
+ ///
+ private void LoadAllSbsarFiles()
+ {
+ string[] files = Directory.GetFiles(Application.dataPath, "*.sbsar", SearchOption.AllDirectories);
+
+ foreach (string filePath in files)
+ {
+ if (filePath.StartsWith(Application.dataPath))
+ {
+ var assetPath = "Assets" + filePath.Substring(Application.dataPath.Length);
+ assetPath = assetPath.Replace(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
+
+ if (!File.Exists(assetPath))
+ continue;
+
+ SubstanceImporter importer = AssetImporter.GetAtPath(assetPath) as SubstanceImporter;
+
+ if (importer == null)
+ continue;
+
+ foreach (var substanceInstance in importer._fileAsset.GetGraphs())
+ {
+ if (!substanceInstance.IsRuntimeOnly)
+ return;
+
+ InitializeInstance(substanceInstance, AssetDatabase.GetAssetPath(substanceInstance), out SubstanceGraphSO _);
+
+ if (TryGetHandlerFromInstance(substanceInstance, out SubstanceNativeGraph fileHandler))
+ {
+ if (substanceInstance == null)
+ continue;
+
+ substanceInstance.RuntimeInitialize(fileHandler, substanceInstance.IsRuntimeOnly);
+ }
+ }
+ }
+ }
+ }
+
+ public void RefreshActiveInstances()
+ {
+ foreach (var substanceInstance in _managedInstances)
+ {
+ substanceInstance.RenderTextures = true;
+ }
+ }
+
+ private List GetGraphInputs(SubstanceNativeGraph substanceFileHandler)
+ {
+ var inputs = new List();
+
+ var graphInputCount = substanceFileHandler.GetInputCount();
+
+ for (int j = 0; j < graphInputCount; j++)
+ {
+ SubstanceInputBase graphInput = substanceFileHandler.GetInputObject(j);
+ inputs.Add(graphInput);
+ }
+
+ return inputs;
+ }
+
+ private List GetGraphOutputs(SubstanceNativeGraph substanceFileHandler)
+ {
+ var outputs = new List();
+
+ var graphOutputCount = substanceFileHandler.GetOutputCount();
+
+ for (int j = 0; j < graphOutputCount; j++)
+ {
+ var outputDescription = substanceFileHandler.GetOutputDescription(j);
+ var unityTextureName = MaterialUtils.GetUnityTextureName(outputDescription);
+ SubstanceOutputTexture graphData = new SubstanceOutputTexture(outputDescription, unityTextureName);
+
+ if (graphData.IsBaseColor() ||
+ graphData.IsDiffuse() ||
+ graphData.IsSpecular() ||
+ graphData.IsHightMap() ||
+ graphData.IsEmissive())
+ {
+ graphData.sRGB = true;
+ }
+ else
+ {
+ graphData.sRGB = false;
+ }
+
+ outputs.Add(graphData);
+ }
+
+ return outputs;
+ }
+
+ private void SetOutputTextureSize(SubstanceGraphSO graph, SubstanceNativeGraph substanceFileHandler)
+ {
+ var outputSize = graph.Input.FirstOrDefault(a => a.Description.Label == "$outputsize");
+
+ if (outputSize == null)
+ return;
+
+ if (outputSize is SubstanceInputInt2 outputSizeInput)
+ {
+ outputSizeInput.Data = SubstanceEditorSettingsSO.TextureOutputResultion();
+ outputSizeInput.UpdateNativeHandle(substanceFileHandler);
+ }
+ }
+
+ #region Rendering
+
+ public void SubmitAsyncRenderWork(SubstanceNativeGraph substanceArchive, SubstanceGraphSO instanceKey, bool forceRebuild = false)
+ {
+ if (substanceArchive.InRenderWork)
+ return;
+
+ substanceArchive.InRenderWork = true;
+
+ var renderResut = new RenderResult()
+ {
+ SubstanceArchive = substanceArchive,
+ ForceRebuild = forceRebuild,
+ GUID = instanceKey.GUID
+ };
+
+ Task.Run(() =>
+ {
+ try
+ {
+ renderResut.Result = substanceArchive.Render();
+ _renderResultsQueue.Enqueue(renderResut);
+ }
+ catch (Exception e)
+ {
+ substanceArchive.InRenderWork = false;
+ Debug.LogException(e);
+ }
+ });
+ }
+
+ public void SubmitAsyncRenderWorkBatch(IReadOnlyList instanceKey)
+ {
+ var guildList = instanceKey.Select(a => a.GUID).ToArray();
+
+ Task.Run(() =>
+ {
+ foreach (var guid in guildList)
+ {
+ if (!TryGetHandlerFromGUI(guid, out SubstanceNativeGraph substanceArchive))
+ continue;
+
+ if (substanceArchive.InRenderWork)
+ continue;
+
+ substanceArchive.InRenderWork = true;
+
+ var renderResut = new RenderResult()
+ {
+ SubstanceArchive = substanceArchive,
+ ForceRebuild = false,
+ GUID = guid
+ };
+
+ try
+ {
+ renderResut.Result = substanceArchive.Render();
+ _renderResultsQueue.Enqueue(renderResut);
+ }
+ catch (Exception e)
+ {
+ substanceArchive.InRenderWork = false;
+ Debug.LogException(e);
+ }
+ }
+ });
+ }
+
+ private void DeleteGeneratedTextures(SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ if (output.OutputTexture != null)
+ {
+ var texturePath = AssetDatabase.GetAssetPath(output.OutputTexture);
+
+ if (!string.IsNullOrEmpty(texturePath))
+ AssetDatabase.DeleteAsset(texturePath);
+ }
+ }
+ }
+
+ private struct RenderResult
+ {
+ public SubstanceNativeGraph SubstanceArchive;
+ public IntPtr Result;
+ public bool ForceRebuild;
+ public string GUID;
+ }
+
+ #endregion Rendering
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs.meta
new file mode 100644
index 0000000..5d09d57
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceEditorEngine.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 83f5cf3931946de4da5f6a2138701f02
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs
new file mode 100644
index 0000000..076f7c8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs
@@ -0,0 +1,142 @@
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+using Adobe.Substance;
+using Adobe.SubstanceEditor.Importer;
+using UnityEditor.SceneManagement;
+
+namespace Adobe.SubstanceEditor
+{
+ [CustomEditor(typeof(SubstanceFileSO))]
+ [CanEditMultipleObjects]
+ public class SubstanceFileEditor : UnityEditor.Editor
+ {
+ private SubstanceFileSO _target;
+
+ public void OnEnable()
+ {
+ _target = serializedObject.targetObject as SubstanceFileSO;
+ }
+
+ ///
+ /// Callback for GUI events to block substance files from been duplicated.
+ ///
+ /// Asset guid.
+ /// GUI rect.
+ protected static void OnHierarchyWindowItemOnGUI(string guid, Rect rt)
+ {
+ var currentEvent = Event.current;
+
+ if ("Duplicate" == currentEvent.commandName && currentEvent.type == EventType.ExecuteCommand)
+ {
+ var assetPath = AssetDatabase.GUIDToAssetPath(guid);
+
+ if (Path.GetExtension(assetPath) == ".sbsar")
+ {
+ Debug.LogWarning("Substance graph can not be manually duplicated.");
+ currentEvent.Use();
+ }
+ }
+ }
+
+ public override Texture2D RenderStaticPreview(string assetPath, UnityEngine.Object[] subAssets, int width, int height)
+ {
+ if (_target == null)
+ return null;
+
+ var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(_target)) as SubstanceImporter;
+
+ if (importer == null)
+ return null;
+
+ var defaultGraph = importer.GetDefaultGraph();
+
+ if (defaultGraph == null)
+ return null;
+
+ if (defaultGraph.HasThumbnail)
+ {
+ var thumbnailTexture = defaultGraph.GetThumbnailTexture();
+ return thumbnailTexture;
+ }
+ else
+ {
+ var icon = UnityPackageInfo.GetSubstanceIcon(width, height);
+
+ if (icon != null)
+ {
+ Texture2D tex = new Texture2D(width, height);
+ EditorUtility.CopySerialized(icon, tex);
+ return tex;
+ }
+ }
+
+ return base.RenderStaticPreview(assetPath, subAssets, width, height);
+ }
+
+ #region Scene Drag
+
+ public void OnSceneDrag(SceneView sceneView, int index)
+ {
+ Event evt = Event.current;
+
+ if (evt.type == EventType.Repaint)
+ return;
+
+ var materialIndex = -1;
+ var go = HandleUtility.PickGameObject(evt.mousePosition, out materialIndex);
+
+ var importer = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(_target)) as SubstanceImporter;
+
+ if (importer != null)
+ {
+ var defaultGraph = importer.GetDefaultGraph();
+
+ if (defaultGraph != null && defaultGraph.OutputMaterial != null)
+ {
+ if (go && go.GetComponent())
+ {
+ HandleRenderer(go.GetComponent(), materialIndex, defaultGraph.OutputMaterial, evt.type, evt.alt);
+ EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
+ }
+ }
+ }
+ }
+
+ internal static void HandleRenderer(Renderer r, int materialIndex, Material dragMaterial, EventType eventType, bool alt)
+ {
+ var applyMaterial = false;
+ switch (eventType)
+ {
+ case EventType.DragUpdated:
+ DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
+ applyMaterial = true;
+ break;
+
+ case EventType.DragPerform:
+ DragAndDrop.AcceptDrag();
+ applyMaterial = true;
+ break;
+ }
+ if (applyMaterial)
+ {
+ var materials = r.sharedMaterials;
+
+ bool isValidMaterialIndex = (materialIndex >= 0 && materialIndex < r.sharedMaterials.Length);
+ if (!alt && isValidMaterialIndex)
+ {
+ materials[materialIndex] = dragMaterial;
+ }
+ else
+ {
+ for (int q = 0; q < materials.Length; ++q)
+ materials[q] = dragMaterial;
+ }
+
+ r.sharedMaterials = materials;
+ }
+ }
+
+ #endregion Scene Drag
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs.meta
new file mode 100644
index 0000000..0269ae7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceFileEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 812ebf7eca2a66e4c989c54c5e8b9e8f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs
new file mode 100644
index 0000000..1de050d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs
@@ -0,0 +1,967 @@
+using Adobe.Substance;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Threading.Tasks;
+using UnityEditor;
+using UnityEditor.SceneManagement;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ [CustomEditor(typeof(SubstanceGraphSO))]
+ public class SubstanceGraphSOEditor : UnityEditor.Editor
+ {
+ private GraphInputsGroupingHelper _inputGroupingHelper;
+
+ private GraphOutputAlphaChannelsHelper _outputChannelsHelper;
+
+ private bool _propertiesChanged = false;
+
+ private bool _showOutput = true;
+
+ private bool _showExportPresentationHandler = false;
+
+ private bool _showPhysicalSize = false;
+
+ private SubstanceGraphSO _target = null;
+
+ private SubstanceNativeGraph _nativeGraph = null;
+
+ // Scrollview handling:
+ private Rect lastRect;
+
+ private Texture2D _backgroundImage;
+
+ private MaterialEditor _materialPreviewEditor;
+
+ private Vector2 _textureOutputScrollView;
+
+ private SerializedProperty _generateAllOutputsProperty;
+ private SerializedProperty _generateAllMipmapsProperty;
+ private SerializedProperty _runtimeOnlyProperty;
+ private SerializedProperty _outputRemapedProperty;
+ private SerializedProperty _graphOutputs;
+ private SerializedProperty _presetProperty;
+ private SerializedProperty _physicalSizelProperty;
+ private SerializedProperty _hasPhysicalSizeProperty;
+ private SerializedProperty _enablePhysicalSizeProperty;
+
+ private IReadOnlyList _outputProperties;
+
+ public void OnEnable()
+ {
+ if (!IsSerializedObjectReady())
+ return;
+
+ _target = serializedObject.targetObject as SubstanceGraphSO;
+ _textureOutputScrollView = Vector2.zero;
+ _propertiesChanged = false;
+
+ if (_inputGroupingHelper == null)
+ _inputGroupingHelper = new GraphInputsGroupingHelper(_target, serializedObject);
+
+ if (_outputChannelsHelper == null)
+ _outputChannelsHelper = new GraphOutputAlphaChannelsHelper(_target);
+
+ float c = (EditorGUIUtility.isProSkin) ? 0.35f : 0.65f;
+
+ if (_backgroundImage == null)
+ _backgroundImage = Globals.CreateColoredTexture(16, 16, new Color(c, c, c, 1));
+
+ EditorApplication.projectWindowItemOnGUI += OnHierarchyWindowItemOnGUI;
+ _generateAllOutputsProperty = serializedObject.FindProperty("GenerateAllOutputs");
+ _generateAllMipmapsProperty = serializedObject.FindProperty("GenerateAllMipmaps");
+ _runtimeOnlyProperty = serializedObject.FindProperty("IsRuntimeOnly");
+ _outputRemapedProperty = serializedObject.FindProperty("OutputRemaped");
+ _graphOutputs = serializedObject.FindProperty("Output");
+ _presetProperty = serializedObject.FindProperty("CurrentStatePreset");
+ _physicalSizelProperty = serializedObject.FindProperty("PhysicalSize");
+ _hasPhysicalSizeProperty = serializedObject.FindProperty("HasPhysicalSize");
+ _enablePhysicalSizeProperty = serializedObject.FindProperty("EnablePhysicalSize");
+
+ if (!SubstanceEditorEngine.instance.TryGetHandlerFromInstance(_target, out _nativeGraph))
+ {
+ if (!SubstanceEditorEngine.instance.IsInitialized)
+ return;
+
+ SubstanceEditorEngine.instance.InitializeInstance(_target, null, out SubstanceGraphSO _);
+
+ if (SubstanceEditorEngine.instance.TryGetHandlerFromInstance(_target, out _nativeGraph))
+ _target.RuntimeInitialize(_nativeGraph, _target.IsRuntimeOnly);
+ }
+
+ var outputList = serializedObject.FindProperty("Output");
+ var list = new List();
+
+ for (int i = 0; i < outputList.arraySize; i++)
+ {
+ var output = outputList.GetArrayElementAtIndex(i);
+ var textureTarget = output.FindPropertyRelative("MaterialTextureTarget");
+ list.Add(textureTarget);
+ }
+
+ _outputProperties = list;
+ }
+
+ private void GetShaderInputTextures(Shader shader)
+ {
+ _shaderInputTextures.Add("none");
+
+ for (int i = 0; i < ShaderUtil.GetPropertyCount(shader); i++)
+ {
+ if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv)
+ {
+ _shaderInputTextures.Add(ShaderUtil.GetPropertyName(shader, i));
+ }
+ }
+ }
+
+ public void OnDisable()
+ {
+ if (_materialPreviewEditor != null)
+ {
+ _materialPreviewEditor.OnDisable();
+ _materialPreviewEditor = null;
+ }
+
+ SaveEditorChanges();
+ EditorApplication.projectWindowItemOnGUI -= OnHierarchyWindowItemOnGUI;
+ }
+
+ public void SaveEditorChanges()
+ {
+ if (_propertiesChanged)
+ {
+ SaveTGAFiles();
+ UpdateGraphMaterialLabel();
+ AssetDatabase.Refresh();
+ }
+
+ _propertiesChanged = false;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ if (serializedObject.targetObject == null)
+ {
+ return;
+ }
+
+ if (_nativeGraph == null)
+ {
+ if (!SubstanceEditorEngine.instance.TryGetHandlerFromInstance(_target, out _nativeGraph))
+ {
+ return;
+ }
+ }
+
+ if (_materialPreviewEditor == null)
+ {
+ var material = _target.OutputMaterial;
+
+ if (material != null)
+ _materialPreviewEditor = MaterialEditor.CreateEditor(material) as MaterialEditor;
+ }
+
+ serializedObject.Update();
+
+ if (DrawGraph())
+ {
+ serializedObject.ApplyModifiedProperties();
+ _propertiesChanged = true;
+ }
+ }
+
+ ///
+ /// Callback for GUI events to block substance files from been duplicated.
+ ///
+ /// Asset guid.
+ /// GUI rect.
+ protected static void OnHierarchyWindowItemOnGUI(string guid, Rect rt)
+ {
+ var currentEvent = Event.current;
+
+ if ("Duplicate" == currentEvent.commandName && currentEvent.type == EventType.ExecuteCommand)
+ {
+ var assetPath = AssetDatabase.GUIDToAssetPath(guid);
+ var instanceObject = AssetDatabase.LoadAssetAtPath(assetPath);
+
+ if (instanceObject != null)
+ {
+ Debug.LogWarning("Substance graph can not be manually duplicated.");
+ currentEvent.Use();
+ }
+ }
+ }
+
+ #region Material Preview
+
+ public override bool HasPreviewGUI()
+ {
+ return _materialPreviewEditor != null;
+ }
+
+ public override GUIContent GetPreviewTitle()
+ {
+ return new GUIContent("Material", null, "");
+ }
+
+ public override void OnPreviewSettings()
+ {
+ if (_materialPreviewEditor)
+ _materialPreviewEditor.OnPreviewSettings();
+ }
+
+ public override void OnPreviewGUI(Rect r, GUIStyle background)
+ {
+ if (_materialPreviewEditor)
+ _materialPreviewEditor.OnPreviewGUI(r, background);
+ }
+
+ #endregion Material Preview
+
+ #region Draw
+
+ private bool DrawGraph()
+ {
+ bool valuesChanged = false;
+
+ if (DrawTextureGenerationSettings(_generateAllOutputsProperty, _generateAllMipmapsProperty, _runtimeOnlyProperty))
+ {
+ _outputRemapedProperty.boolValue = true;
+ valuesChanged = true;
+ }
+
+ GUILayout.Space(8);
+
+ DrawInputs(out bool serializedObject, out bool renderGraph);
+
+ if (renderGraph)
+ {
+ var newPreset = _nativeGraph.CreatePresetFromCurrentState();
+ _presetProperty.stringValue = newPreset;
+ SubstanceEditorEngine.instance.SubmitAsyncRenderWork(_nativeGraph, _target);
+ valuesChanged = true;
+ }
+
+ if (serializedObject)
+ valuesChanged = true;
+
+ DrawPresentExport(_target);
+
+ EditorGUILayout.Space();
+
+ _showOutput = EditorGUILayout.Foldout(_showOutput, "Generated textures");
+
+ if (_showOutput)
+ {
+ if (DrawAdvanceSettings())
+ {
+ MaterialUtils.EnableEmissionIfAssigned(_target.OutputMaterial);
+ _outputRemapedProperty.boolValue = true;
+ valuesChanged = true;
+ }
+
+ if (DrawGeneratedTextures(_graphOutputs, _generateAllOutputsProperty.boolValue))
+ {
+ _outputRemapedProperty.boolValue = true;
+ valuesChanged = true;
+ }
+ }
+
+ return valuesChanged;
+ }
+
+ #region Texture Generation Settings
+
+ private bool DrawTextureGenerationSettings(SerializedProperty generateAllOutputsProperty, SerializedProperty generateAllMipmapsProperty, SerializedProperty runtimeOnlyProperty)
+ {
+ bool changed = false;
+
+ GUILayout.Space(4);
+
+ var boxWidth = EditorGUIUtility.currentViewWidth;
+ var boxHeight = (3 * EditorGUIUtility.singleLineHeight) + 16;
+ var padding = 16;
+
+ DrawHighlightBox(boxWidth, boxHeight, padding);
+
+ if (DrawGenerateAllOutputs(generateAllOutputsProperty) ||
+ DrawGenerateAllMipmaps(generateAllMipmapsProperty) ||
+ DrawRuntimeOnlyToggle(runtimeOnlyProperty))
+ {
+ changed = true;
+ }
+
+ return changed;
+ }
+
+ private static readonly GUIContent _GenerateAllOutputsGUI = new GUIContent("Generate All Outputs", "Force the generation of all Substance outputs");
+
+ private bool DrawGenerateAllOutputs(SerializedProperty generateAllOutputsProperty)
+ {
+ var oldValue = generateAllOutputsProperty.boolValue;
+ generateAllOutputsProperty.boolValue = EditorGUILayout.Toggle(_GenerateAllOutputsGUI, generateAllOutputsProperty.boolValue);
+ return oldValue != generateAllOutputsProperty.boolValue;
+ }
+
+ private static readonly GUIContent _GenerateAllMipMapsGUI = new GUIContent("Generate Mip Maps", "Enable MipMaps when generating textures");
+
+ private bool DrawGenerateAllMipmaps(SerializedProperty generateAllMipmapsProperty)
+ {
+ var oldValue = generateAllMipmapsProperty.boolValue;
+ generateAllMipmapsProperty.boolValue = EditorGUILayout.Toggle(_GenerateAllMipMapsGUI, generateAllMipmapsProperty.boolValue);
+ return oldValue != generateAllMipmapsProperty.boolValue;
+ }
+
+ private static readonly GUIContent _RuntimeOnlyGUI = new GUIContent("Runtime only", "If checked this instance will not generate TGA texture files");
+
+ private bool DrawRuntimeOnlyToggle(SerializedProperty runtimeOnlyProperty)
+ {
+ var oldValue = runtimeOnlyProperty.boolValue;
+ runtimeOnlyProperty.boolValue = EditorGUILayout.Toggle(_RuntimeOnlyGUI, runtimeOnlyProperty.boolValue);
+ return oldValue != runtimeOnlyProperty.boolValue;
+ }
+
+ #endregion Texture Generation Settings
+
+ #region Physical size
+
+ private bool DrawPhysicalSize()
+ {
+ if (!_hasPhysicalSizeProperty.boolValue)
+ return false;
+
+ _showPhysicalSize = EditorGUILayout.Foldout(_showPhysicalSize, "Physical Size");
+ bool valueChanged = false;
+
+ if (_showPhysicalSize)
+ {
+ var currentValue = _physicalSizelProperty.vector3Value;
+ var enablePhysicaSize = _enablePhysicalSizeProperty.boolValue;
+
+ if (EditorGUILayout.Toggle("Use Physical Size", enablePhysicaSize) != enablePhysicaSize)
+ {
+ _enablePhysicalSizeProperty.boolValue = !enablePhysicaSize;
+ valueChanged = true;
+ }
+
+ var newValue = new Vector3();
+
+ newValue.x = EditorGUILayout.FloatField("X:", currentValue.x);
+ newValue.y = EditorGUILayout.FloatField("Y:", currentValue.y);
+ newValue.z = EditorGUILayout.FloatField("Z:", currentValue.z);
+
+ if ((newValue - currentValue).sqrMagnitude >= 0.01f)
+ {
+ _physicalSizelProperty.vector3Value = newValue;
+ valueChanged = true;
+ }
+
+ if (_target.OutputMaterial != null)
+ {
+ DrawPhysicalSizeOffsets(_target.OutputMaterial);
+ }
+ }
+ return valueChanged;
+ }
+
+ private static bool _showPhysicalSizePositionOffset = false;
+
+ private void DrawPhysicalSizeOffsets(Material material)
+ {
+ EditorGUI.indentLevel++;
+
+ _showPhysicalSizePositionOffset = EditorGUILayout.Foldout(_showPhysicalSizePositionOffset, "Position Offset (In %)");
+
+ if (_showPhysicalSizePositionOffset)
+ {
+ Vector2 offset = MaterialUtils.GetPhysicalSizePositionOffset(material);
+ Vector2 newOffset = offset;
+ newOffset.x = EditorGUILayout.FloatField("X:", offset.x * 100.0f) / 100.0f;
+ newOffset.y = EditorGUILayout.FloatField("Y:", offset.y * 100.0f) / 100.0f;
+
+ if ((newOffset - offset).sqrMagnitude >= 0.0000001f)
+ {
+ MaterialUtils.SetPhysicalSizePositionOffset(material, newOffset);
+ }
+ }
+
+ EditorGUI.indentLevel--;
+ }
+
+ #endregion Physical size
+
+ #region Input draw
+
+ ///
+ /// Draws substance file inputs.
+ ///
+ /// True if object properties have changed.
+ /// True if substance graph must be re rendered.
+ private void DrawInputs(out bool serializeObject, out bool renderGraph)
+ {
+ renderGraph = false;
+ serializeObject = false;
+
+ EditorGUILayout.Space();
+
+ if (DrawGrouplessInputs(_inputGroupingHelper.GrouplessInputs))
+ {
+ renderGraph = true;
+ serializeObject = true;
+ }
+
+ EditorGUILayout.Space();
+
+ if (PhysicalSizeExtension.IsSupported())
+ {
+ if (DrawPhysicalSize())
+ {
+ renderGraph = true;
+ serializeObject = true;
+ MaterialUtils.ApplyPhysicalSize(_target.OutputMaterial, _physicalSizelProperty.vector3Value, _enablePhysicalSizeProperty.boolValue);
+ UpdateGraphMaterialLabel();
+ }
+ }
+
+ EditorGUILayout.Space();
+
+ foreach (var groupInfo in _inputGroupingHelper.InputGroups)
+ {
+ if (DrawInputGroup(groupInfo))
+ {
+ renderGraph = true;
+ serializeObject = true;
+ }
+
+ EditorGUILayout.Space();
+ }
+ }
+
+ ///
+ /// Draws the inputs that are not part of any input group.
+ ///
+ /// Inputs info
+ /// True if any input has changed.
+ private bool DrawGrouplessInputs(SubstanceInputGroupCachedInfo inputsInfo)
+ {
+ var indexArray = inputsInfo.Inputs;
+
+ bool changed = false;
+
+ for (int i = 0; i < indexArray.Count; i++)
+ {
+ var property = indexArray[i].InputProperty;
+ var guiContent = indexArray[i].GUIContent;
+ var index = indexArray[i].Index;
+
+ if (_nativeGraph.IsInputVisible(index))
+ {
+ if (SubstanceInputDrawer.DrawInput(property, guiContent, _nativeGraph, index))
+ changed = true;
+ }
+ }
+
+ return changed;
+ }
+
+ ///
+ /// Draws inputs from a input group.
+ ///
+ ///
+ ///
+ private bool DrawInputGroup(SubstanceInputGroupCachedInfo groupInfo)
+ {
+ var groupName = groupInfo.Name;
+ var indexArray = groupInfo.Inputs;
+
+ groupInfo.ShowGroup = EditorGUILayout.Foldout(groupInfo.ShowGroup, groupName);
+
+ if (!groupInfo.ShowGroup)
+ return false;
+
+ bool changed = false;
+
+ for (int i = 0; i < indexArray.Count; i++)
+ {
+ EditorGUI.indentLevel++;
+
+ var property = indexArray[i].InputProperty;
+ var guiContent = indexArray[i].GUIContent;
+ var index = indexArray[i].Index;
+
+ if (_nativeGraph.IsInputVisible(index))
+ {
+ if (SubstanceInputDrawer.DrawInput(property, guiContent, _nativeGraph, index))
+ changed = true;
+ }
+
+ EditorGUI.indentLevel--;
+ }
+
+ return changed;
+ }
+
+ #endregion Input draw
+
+ #region Output draw
+
+ private static readonly GUIContent _GeneratedTextureGUI = new GUIContent();
+
+ private bool DrawGeneratedTextures(SerializedProperty outputList, bool generateAllTextures)
+ {
+ bool valueChanged = false;
+ EditorGUILayout.Space(4);
+
+ using (var scrollViewScope = new EditorGUILayout.ScrollViewScope(_textureOutputScrollView, false, false))
+ {
+ scrollViewScope.handleScrollWheel = false;
+ _textureOutputScrollView = scrollViewScope.scrollPosition;
+
+ EditorGUILayout.BeginHorizontal();
+ {
+ var outputsCount = outputList.arraySize;
+
+ for (int i = 0; i < outputsCount; i++)
+ {
+ var outputProperty = outputList.GetArrayElementAtIndex(i);
+ var outputTexture = _target.Output[i];
+
+ if (generateAllTextures || outputTexture.IsStandardOutput(_target.OutputMaterial))
+ valueChanged |= DrawOutputTexture(outputProperty, _GeneratedTextureGUI, outputTexture);
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+
+ return valueChanged;
+ }
+
+ private bool DrawOutputTexture(SerializedProperty output, GUIContent content, SubstanceOutputTexture substanceOutput)
+ {
+ var valueChanged = false;
+
+ EditorGUILayout.BeginVertical(GUILayout.Width(120));
+ {
+ var texture = output.FindPropertyRelative("OutputTexture").objectReferenceValue as Texture2D;
+ var label = output.FindPropertyRelative("Description.Channel").stringValue;
+ var sRGB = output.FindPropertyRelative("sRGB");
+ var alpha = output.FindPropertyRelative("AlphaChannel");
+ var inverAlpha = output.FindPropertyRelative("InvertAssignedAlpha");
+ var isAlphaAssignable = output.FindPropertyRelative("IsAlphaAssignable").boolValue;
+
+ //Draw texture preview.
+ if (texture != null)
+ {
+ if (texture != null)
+ {
+ content.text = null;
+
+ var thumbnail = EditorUtility.IsDirty(texture) ? AssetPreview.GetMiniThumbnail(texture) : AssetPreview.GetAssetPreview(texture);
+
+ if (thumbnail == null)
+ thumbnail = AssetPreview.GetAssetPreview(texture);
+
+ content.image = thumbnail;
+ content.tooltip = texture.name;
+
+ if (GUILayout.Button(content, //style,
+ GUILayout.Width(70),
+ GUILayout.Height(70)))
+ {
+ // Highlight object in project browser:
+ EditorGUIUtility.PingObject(texture);
+ }
+ }
+ }
+
+ GUILayout.Label(label);
+
+ if (substanceOutput.IsBaseColor() || substanceOutput.IsDiffuse() || substanceOutput.IsEmissive())
+ {
+ var oldsRGB = sRGB.boolValue;
+ var newsRGB = GUILayout.Toggle(oldsRGB, "sRGB");
+
+ if (newsRGB != oldsRGB)
+ {
+ sRGB.boolValue = newsRGB;
+ valueChanged = true;
+ }
+ }
+
+ //Draw alpha remapping.
+ EditorGUILayout.BeginHorizontal(GUILayout.Width(80), GUILayout.Height(EditorGUIUtility.singleLineHeight));
+ {
+ if (isAlphaAssignable)
+ {
+ var option = _outputChannelsHelper.GetAlphaChannels(label);
+ var index = 0;
+
+ if (!string.IsNullOrEmpty(alpha.stringValue))
+ index = Array.IndexOf(option, alpha.stringValue);
+
+ EditorGUILayout.LabelField("A", GUILayout.Width(10));
+
+ var newIndex = EditorGUILayout.Popup(index, option, GUILayout.Width(70));
+
+ if (newIndex != index)
+ {
+ alpha.stringValue = newIndex != 0 ? option[newIndex] : string.Empty;
+ valueChanged = true;
+ }
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+
+ //Draw inver alpha.
+ EditorGUILayout.BeginHorizontal(GUILayout.Width(80), GUILayout.Height(EditorGUIUtility.singleLineHeight));
+ {
+ if (!string.IsNullOrEmpty(alpha.stringValue))
+ {
+ var oldValue = inverAlpha.boolValue;
+ var newValue = GUILayout.Toggle(oldValue, "Invert alpha");
+
+ if (newValue != oldValue)
+ {
+ inverAlpha.boolValue = newValue;
+ valueChanged = true;
+ }
+ }
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+ EditorGUILayout.EndVertical();
+
+ return valueChanged;
+ }
+
+ private static bool _showAdvanceSettings = false;
+
+ private readonly List _shaderInputTextures = new List();
+ private string _shaderName = string.Empty;
+
+ private bool DrawAdvanceSettings()
+ {
+ EditorGUILayout.Space();
+
+ EditorGUI.indentLevel++;
+
+ _showAdvanceSettings = EditorGUILayout.Foldout(_showAdvanceSettings, "Output Textures Mapping");
+
+ EditorGUILayout.Space();
+
+ bool result = false;
+
+ if (_showAdvanceSettings)
+ {
+ EditorGUI.indentLevel++;
+
+ if (_target.OutputMaterial != null)
+ {
+ if (!_shaderName.Equals(_target.OutputMaterial.shader.name, StringComparison.OrdinalIgnoreCase))
+ {
+ _shaderInputTextures.Clear();
+ GetShaderInputTextures(_target.OutputMaterial.shader);
+ }
+
+ for (int i = 0; i < _outputProperties.Count; i++)
+ {
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.TextField(_target.Output[i].Description.Channel, GUILayout.Width(200));
+
+ var oldstring = _outputProperties[i].stringValue;
+ var oldSelected = _shaderInputTextures.FindIndex(0, _shaderInputTextures.Count, (value) => { return oldstring.Equals(value, StringComparison.OrdinalIgnoreCase); });
+
+ if (oldSelected == -1)
+ oldSelected = 0;
+
+ var newSelectedIndex = EditorGUILayout.Popup("", oldSelected, _shaderInputTextures.ToArray());
+
+ if (newSelectedIndex != oldSelected)
+ {
+ result = true;
+ var updateString = newSelectedIndex == 0 ? string.Empty : _shaderInputTextures[newSelectedIndex];
+ _outputProperties[i].stringValue = updateString;
+ MaterialUtils.UpdateTextureTarget(_target.OutputMaterial, _target.Output[i].OutputTexture, oldstring, updateString);
+
+ //Clean other outputs that have the same assignment.
+ for (int j = 0; j < _outputProperties.Count; j++)
+ {
+ if (string.Equals(_outputProperties[j].stringValue, updateString) && i != j)
+ {
+ _outputProperties[j].stringValue = string.Empty;
+ }
+ }
+ }
+
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ EditorGUI.indentLevel--;
+ }
+
+ EditorGUI.indentLevel--;
+
+ return result;
+ }
+
+ #endregion Output draw
+
+ #region Presets draw
+
+ private static readonly GUIContent _PresetExportGUIContent = new GUIContent("Export Preset...", "Save Preset");
+ private static readonly GUIContent _PresetImportGUIContent = new GUIContent("Import Preset...", "Fetch Preset");
+ private static readonly GUIContent _PresetResetGUIContent = new GUIContent("Reset Preset to Default", "Restore input defaults");
+
+ private void DrawPresentExport(SubstanceGraphSO graph)
+ {
+ int labelWidth = (int)EditorGUIUtility.labelWidth - 15;
+
+ _showExportPresentationHandler = EditorGUILayout.Foldout(_showExportPresentationHandler, "Preset Handling", true);
+
+ if (_showExportPresentationHandler)
+ {
+ EditorGUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.LabelField(" ", GUILayout.Width(labelWidth)); // Used to position the next button
+
+ if (GUILayout.Button(_PresetExportGUIContent))
+ HandleExportPresets(graph);
+ }
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.LabelField(" ", GUILayout.Width(labelWidth)); // Used to position the next button
+
+ if (GUILayout.Button(_PresetImportGUIContent))
+ HandleImportPresets(graph);
+ }
+ EditorGUILayout.EndHorizontal();
+
+ GUILayout.Space(6);
+
+ EditorGUILayout.BeginHorizontal();
+ {
+ EditorGUILayout.LabelField(" ", GUILayout.Width(labelWidth)); // Used to position the next button
+
+ if (GUILayout.Button(_PresetResetGUIContent))
+ HandleResetPresets(graph);
+ }
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ private void HandleExportPresets(SubstanceGraphSO graph)
+ {
+ string savePath = EditorUtility.SaveFilePanel("Save Preset as...", graph.AssetPath, graph.GetAssetFileName(), "sbsprs");
+
+ if (savePath != "")
+ {
+ string savePreset = "\n "; //formatting line needed by other integrations
+ savePreset += SubstanceEditorEngine.instance.ExportGraphPresetXML(graph);
+ savePreset += " ";
+ File.WriteAllText(savePath, savePreset);
+ }
+ }
+
+ private void HandleImportPresets(SubstanceGraphSO graph)
+ {
+ string loadPath = EditorUtility.OpenFilePanel("Select Preset", graph.AssetPath, "sbsprs");
+
+ if (loadPath != "")
+ {
+ string presetFile = System.IO.File.ReadAllText(loadPath);
+
+ int startIndex = presetFile.IndexOf("") + 10;
+ var presetXML = presetFile.Substring(startIndex, endIndex - startIndex);
+
+ SubstanceEditorEngine.instance.LoadPresetsToGraph(graph, presetXML);
+ }
+ }
+
+ private void HandleResetPresets(SubstanceGraphSO graph)
+ {
+ SubstanceEditorEngine.instance.LoadPresetsToGraph(graph, graph.DefaultPreset);
+ }
+
+ #endregion Presets draw
+
+ #region Thumbnail preview
+
+ public override Texture2D RenderStaticPreview(string assetPath, UnityEngine.Object[] subAssets, int width, int height)
+ {
+ if (_target.HasThumbnail)
+ return _target.GetThumbnailTexture();
+
+ var icon = UnityPackageInfo.GetSubstanceIcon(width, height);
+
+ if (icon != null)
+ {
+ Texture2D tex = new Texture2D(width, height);
+ EditorUtility.CopySerialized(icon, tex);
+ return tex;
+ }
+
+ return base.RenderStaticPreview(assetPath, subAssets, width, height);
+ }
+
+ #endregion Thumbnail preview
+
+ #endregion Draw
+
+ #region Scene Drag
+
+ public void OnSceneDrag(SceneView sceneView, int index)
+ {
+ Event evt = Event.current;
+
+ if (evt.type == EventType.Repaint)
+ return;
+
+ var materialIndex = -1;
+ var go = HandleUtility.PickGameObject(evt.mousePosition, out materialIndex);
+
+ if (_target.OutputMaterial != null)
+ {
+ if (go && go.GetComponent())
+ {
+ HandleRenderer(go.GetComponent(), materialIndex, _target.OutputMaterial, evt.type, evt.alt);
+ EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
+
+ if (_target.IsRuntimeOnly)
+ {
+ var runtimeComponent = go.GetComponent();
+
+ if (runtimeComponent == null)
+ runtimeComponent = go.AddComponent();
+
+ runtimeComponent.AttachGraph(_target);
+ }
+ }
+ }
+ }
+
+ internal static void HandleRenderer(Renderer r, int materialIndex, Material dragMaterial, EventType eventType, bool alt)
+ {
+ var applyMaterial = false;
+ switch (eventType)
+ {
+ case EventType.DragUpdated:
+ DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
+ applyMaterial = true;
+ break;
+
+ case EventType.DragPerform:
+ DragAndDrop.AcceptDrag();
+ applyMaterial = true;
+ break;
+ }
+ if (applyMaterial)
+ {
+ var materials = r.sharedMaterials;
+
+ bool isValidMaterialIndex = (materialIndex >= 0 && materialIndex < r.sharedMaterials.Length);
+ if (!alt && isValidMaterialIndex)
+ {
+ materials[materialIndex] = dragMaterial;
+ }
+ else
+ {
+ for (int q = 0; q < materials.Length; ++q)
+ materials[q] = dragMaterial;
+ }
+
+ r.sharedMaterials = materials;
+ }
+ }
+
+ #endregion Scene Drag
+
+ #region Utilities
+
+ private void SaveTGAFiles()
+ {
+ if (_target == null)
+ return;
+
+ if (_target.IsRuntimeOnly)
+ return;
+
+ _target.OutputRemaped = true;
+ _target.RenderTextures = true;
+ EditorUtility.SetDirty(_target);
+ }
+
+ private Rect DrawHighlightBox(float width, float height, float xPadding)
+ {
+ float bx, by, bw, bh;
+
+ bx = xPadding;
+ by = GetPosition();
+ bw = width - xPadding;
+ bh = height;
+
+ var boxRect = new Rect(bx, by, bw, bh);
+
+ var backgroundStyle = new GUIStyle();
+ backgroundStyle.normal.background = _backgroundImage;
+ GUI.Box(boxRect, GUIContent.none, backgroundStyle);
+ return boxRect;
+ }
+
+ private int GetPosition()
+ {
+ Rect rect = GUILayoutUtility.GetLastRect();
+
+ if ((rect.x != 0) || (rect.y != 0))
+ lastRect = rect;
+
+ return (int)lastRect.y;
+ }
+
+ /// This is a workaround a bug in the Unity asset database for generating materials previews.
+ /// It basically generated a previews image whenever a property changes in the material, but it is now considering changes in the
+ /// textures assign to the material itself. By adding a random label we ensure that the asset preview image will be updated.
+ private void UpdateGraphMaterialLabel()
+ {
+ if (_target == null)
+ return;
+
+ const string tagPrefix = "sb_";
+
+ var material = _target.OutputMaterial;
+
+ if (material != null)
+ {
+ var labels = AssetDatabase.GetLabels(material);
+ var newLabels = labels.Where(a => !a.Contains(tagPrefix)).ToList();
+ newLabels.Add($"{tagPrefix}{Guid.NewGuid().ToString("N")}");
+ AssetDatabase.SetLabels(material, newLabels.ToArray());
+ }
+ }
+
+ #endregion Utilities
+
+ /// Work around Unity SerializedObjectNotCreatableException during script compilation.
+ private bool IsSerializedObjectReady()
+ {
+ try
+ {
+ if (serializedObject.targetObject == null)
+ return false;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs.meta
new file mode 100644
index 0000000..b6aee17
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/SubstanceGraphSOEditor.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 94692ae502378e0469eba20cb87193c4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities.meta
new file mode 100644
index 0000000..8021541
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 09746064b4df14847928695cb7c68c07
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs
new file mode 100644
index 0000000..ca08e9a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs
@@ -0,0 +1,66 @@
+using Adobe.Substance;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// General utilites for material creating and output texture assignment.
+ ///
+ internal static class AssetCreationUtils
+ {
+ ///
+ /// Creates a Unity material and set its textures according to the currently in use Unity render pipeline.//
+ ///
+ ///
+ ///
+ public static void CreateMaterialOrUpdateMaterial(SubstanceGraphSO graph, string instanceName)
+ {
+ var materialOutput = graph.GetAssociatedAssetPath($"{instanceName}_material", "mat");
+ var oldMaterial = AssetDatabase.LoadAssetAtPath(materialOutput);
+
+ if (oldMaterial != null)
+ {
+ graph.OutputMaterial = oldMaterial;
+ }
+
+ bool createMaterial = graph.OutputMaterial == null;
+
+ if (createMaterial)
+ {
+ graph.OutputMaterial = new Material(MaterialUtils.GetStandardShader())
+ {
+ name = Path.GetFileNameWithoutExtension(materialOutput)
+ };
+ }
+
+ MaterialUtils.AssignOutputTexturesToMaterial(graph);
+
+ if (createMaterial)
+ AssetDatabase.CreateAsset(graph.OutputMaterial, materialOutput);
+ else
+ EditorUtility.SetDirty(graph.OutputMaterial);
+
+ graph.MaterialShader = graph.OutputMaterial.shader.name;
+ }
+
+ public static void UpdateMeterialAssignment(SubstanceGraphSO graph)
+ {
+ graph.MaterialShader = graph.OutputMaterial.shader.name;
+
+ foreach (var output in graph.Output)
+ {
+ if (!output.IsStandardOutput(graph.OutputMaterial) && (!graph.GenerateAllOutputs))
+ {
+ var texturePath = AssetDatabase.GetAssetPath(output.OutputTexture);
+
+ if (File.Exists(texturePath))
+ AssetDatabase.DeleteAsset(texturePath);
+
+ output.OutputTexture = null;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs.meta
new file mode 100644
index 0000000..3e27abe
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/AssetCreationUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: dc9df0d9c52231245aa194e418a9c115
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs
new file mode 100644
index 0000000..af42724
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs
@@ -0,0 +1,67 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// Static class with utility methods commonly used to draw substance properties and UI.
+ ///
+ internal static class EditorDrawUtilities
+ {
+ private static readonly string[] _resolutions = { "256", "512", "1024", "2048", "4096" };
+
+ public static void DrawResolutionSelection(SerializedProperty property, GUIContent content, params GUILayoutOption[] options)
+ {
+ Vector2Int oldValue = property.vector2IntValue;
+ var currentIndex = GetEnumIndex(oldValue);
+ int newIndex = EditorGUILayout.Popup(content, currentIndex, _resolutions, options);
+
+ if (currentIndex != newIndex)
+ {
+ Vector2Int newValue = GetValueFromIndex(newIndex);
+ property.vector2IntValue = newValue;
+ }
+ }
+
+ private static int GetEnumIndex(Vector2Int data)
+ {
+ switch (data.x)
+ {
+ case 8:
+ return 0;
+
+ case 9:
+ return 1;
+
+ case 10:
+ return 2;
+
+ case 11:
+ return 3;
+
+ case 12:
+ return 4;
+
+ default:
+ return 0;
+ }
+ }
+
+ private static Vector2Int GetValueFromIndex(int index)
+ {
+ switch (index)
+ {
+ case 0: return new Vector2Int(8, 8);
+ case 1: return new Vector2Int(9, 9);
+ case 2: return new Vector2Int(10, 10);
+ case 3: return new Vector2Int(11, 11);
+ case 4: return new Vector2Int(12, 12);
+
+ default:
+ return new Vector2Int(8, 8);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs.meta
new file mode 100644
index 0000000..d7d9477
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorDrawUtilities.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7fb287e26604e6d4493b8ad922d4b790
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs
new file mode 100644
index 0000000..cbcb205
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs
@@ -0,0 +1,353 @@
+using Adobe.Substance;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class EditorTools
+ {
+ ///
+ /// Makes an object editable. (Usefull for object managed by Importers)
+ ///
+ ///
+ public static void OverrideReadOnlyFlag(UnityEngine.Object unityObject)
+ {
+ unityObject.hideFlags &= ~HideFlags.NotEditable;
+ }
+
+ public static SubstanceGraphSO CreateSubstanceInstance(string assetPath, SubstanceFileRawData fileData, string name, int index, string guid, bool isRoot = false, SubstanceGraphSO copy = null)
+ {
+ var instanceAsset = ScriptableObject.CreateInstance();
+ instanceAsset.AssetPath = assetPath;
+ instanceAsset.RawData = fileData;
+ instanceAsset.Name = name;
+ instanceAsset.IsRoot = isRoot;
+ instanceAsset.GUID = guid;
+ instanceAsset.OutputPath = CreateGraphFolder(assetPath, name);
+ instanceAsset.SetNativeID(index);
+ instanceAsset.GenerateAllMipmaps = true;
+ var instancePath = MakeRootGraphAssetPath(instanceAsset);
+ SubstanceEditorEngine.instance.InitializeInstance(instanceAsset, instancePath, out SubstanceGraphSO _);
+ SubstanceEditorEngine.instance.CreateGraphObject(instanceAsset, copy);
+ AssetDatabase.CreateAsset(instanceAsset, instancePath);
+ return instanceAsset;
+ }
+
+ public static void UpdateSubstanceInstance(SubstanceGraphSO instanceAsset, SubstanceFileRawData newFileData)
+ {
+ instanceAsset.RawData = newFileData;
+ var inputState = SubstanceEditorEngine.instance.SerializeCurrentState(instanceAsset);
+ SubstanceEditorEngine.instance.ReleaseInstance(instanceAsset);
+ SubstanceEditorEngine.instance.InitializeInstance(instanceAsset, null, out SubstanceGraphSO _);
+ SubstanceEditorEngine.instance.SetStateFromSerializedData(instanceAsset, inputState);
+ SubstanceEditorEngine.instance.CreateGraphObject(instanceAsset, null);
+ }
+
+ public class SubstanceInstanceInfo
+ {
+ public string Name { get; set; }
+ public int Index { get; set; }
+ public string GUID { get; set; }
+ public bool IsRoot { get; set; }
+
+ public SubstanceInstanceInfo()
+ {
+ }
+ }
+
+ public static void CreateSubstanceInstanceAsync(string assetPath, SubstanceFileRawData fileData, IEnumerable infos)
+ {
+ var instances = new List>();
+
+ foreach (var item in infos)
+ {
+ var instanceAsset = ScriptableObject.CreateInstance();
+ instanceAsset.AssetPath = assetPath;
+ instanceAsset.RawData = fileData;
+ instanceAsset.Name = item.Name;
+ instanceAsset.IsRoot = item.IsRoot;
+ instanceAsset.GUID = item.GUID;
+ instanceAsset.OutputPath = CreateGraphFolder(assetPath, item.Name);
+ instanceAsset.SetNativeID(item.Index);
+ instanceAsset.GenerateAllMipmaps = true;
+ var instancePath = MakeRootGraphAssetPath(instanceAsset);
+ SubstanceEditorEngine.instance.InitializeInstance(instanceAsset, instancePath, out SubstanceGraphSO matchingInstance);
+
+ SubstanceEditorEngine.instance.CreateGraphObject(instanceAsset, matchingInstance);
+ instances.Add(new Tuple(instanceAsset, instancePath));
+ }
+
+ foreach (var instance in instances)
+ {
+ SubstanceEditorEngine.instance.DelayAssetCreation(instance.Item1, instance.Item2);
+ }
+ }
+
+ public static void Rename(this SubstanceGraphSO substanceMaterial, string name)
+ {
+ var oldFolder = substanceMaterial.OutputPath;
+
+ if (substanceMaterial.Name == name)
+ return;
+
+ substanceMaterial.Name = name;
+
+ var dir = Path.GetDirectoryName(substanceMaterial.AssetPath);
+ var assetName = Path.GetFileNameWithoutExtension(substanceMaterial.AssetPath);
+ var newFolder = Path.Combine(dir, $"{assetName}_{name}");
+ substanceMaterial.OutputPath = newFolder;
+
+ FileUtil.MoveFileOrDirectory(oldFolder, substanceMaterial.OutputPath);
+ File.Delete($"{oldFolder}.meta");
+
+ EditorUtility.SetDirty(substanceMaterial);
+ AssetDatabase.Refresh();
+
+ var oldPath = AssetDatabase.GetAssetPath(substanceMaterial);
+ var error = AssetDatabase.RenameAsset(oldPath, $"{name}.asset");
+
+ if (!string.IsNullOrEmpty(error))
+ Debug.LogError(error);
+
+ var materialOldName = AssetDatabase.GetAssetPath(substanceMaterial.OutputMaterial);
+ var materialNewName = Path.GetFileName(substanceMaterial.GetAssociatedAssetPath($"{name}_material", "mat"));
+ error = AssetDatabase.RenameAsset(materialOldName, materialNewName);
+ EditorUtility.SetDirty(substanceMaterial.OutputMaterial);
+
+ if (!string.IsNullOrEmpty(error))
+ Debug.LogError(error);
+
+ AssetDatabase.Refresh();
+ }
+
+ public static void Move(this SubstanceGraphSO substanceMaterial, string to)
+ {
+ substanceMaterial.OutputPath = Path.GetDirectoryName(to);
+
+ var oldMaterialPath = AssetDatabase.GetAssetPath(substanceMaterial.OutputMaterial);
+ AssetDatabase.MoveAsset(oldMaterialPath, Path.Combine(substanceMaterial.OutputPath, Path.GetFileName(oldMaterialPath)));
+
+ foreach (var output in substanceMaterial.Output)
+ {
+ var textureAssetPath = AssetDatabase.GetAssetPath(output.OutputTexture);
+ var textureFileName = Path.GetFileName(textureAssetPath);
+ var newTexturePath = Path.Combine(substanceMaterial.OutputPath, textureFileName);
+ AssetDatabase.MoveAsset(textureAssetPath, newTexturePath);
+ }
+
+ EditorUtility.SetDirty(substanceMaterial);
+ AssetDatabase.Refresh();
+ }
+
+ private static string CreateGraphFolder(string assetPath, string graphName)
+ {
+ var dir = Path.GetDirectoryName(assetPath);
+ var assetName = Path.GetFileNameWithoutExtension(assetPath);
+
+ var newFolder = Path.Combine(dir, $"{assetName}_{graphName}");
+
+ if (Directory.Exists(newFolder))
+ return newFolder;
+
+ string guid = AssetDatabase.CreateFolder(dir, $"{assetName}_{graphName}");
+ return AssetDatabase.GUIDToAssetPath(guid);
+ }
+
+ private static string MakeRootGraphAssetPath(SubstanceGraphSO substanceMaterial)
+ {
+ return Path.Combine(substanceMaterial.OutputPath, $"{substanceMaterial.Name}.asset");
+ }
+ }
+
+ public static class SubstanceEditorTools
+ {
+ public static void SetGraphFloatInput(SubstanceGraphSO graph, int inputId, float value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.floatValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphFloat2Input(SubstanceGraphSO graph, int inputId, Vector2 value)
+ {
+ var so = new SerializedObject(graph);
+
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.vector2Value = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphFloat3Input(SubstanceGraphSO graph, int inputId, Vector3 value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.vector3Value = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphFloat4Input(SubstanceGraphSO graph, int inputId, Vector3 value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.vector4Value = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphIntInput(SubstanceGraphSO graph, int inputId, int value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.intValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphInt2Input(SubstanceGraphSO graph, int inputId, Vector2Int value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.vector2IntValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphInt3Input(SubstanceGraphSO graph, int inputId, Vector3Int value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.vector3IntValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphInt4Input(SubstanceGraphSO graph, int inputId, int value0, int value1, int value2, int value3)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp0 = graphInput.FindPropertyRelative("Data0");
+ var dataProp1 = graphInput.FindPropertyRelative("Data1");
+ var dataProp2 = graphInput.FindPropertyRelative("Data2");
+ var dataProp3 = graphInput.FindPropertyRelative("Data3");
+ dataProp0.intValue = value0;
+ dataProp1.intValue = value1;
+ dataProp2.intValue = value2;
+ dataProp3.intValue = value3;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphInputString(SubstanceGraphSO graph, int inputId, string value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.stringValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ public static void SetGraphInputTexture(SubstanceGraphSO graph, int inputId, Texture2D value)
+ {
+ var so = new SerializedObject(graph);
+ var graphInputs = so.FindProperty("Input");
+ var graphInput = graphInputs.GetArrayElementAtIndex(inputId);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+ dataProp.objectReferenceValue = value;
+
+ so.ApplyModifiedProperties();
+
+ UpdateNativeInput(graph, inputId);
+ }
+
+ private static void UpdateNativeInput(SubstanceGraphSO graph, int inputId)
+ {
+ if (!SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out SubstanceNativeGraph _nativeGraph))
+ {
+ if (!SubstanceEditorEngine.instance.IsInitialized)
+ return;
+
+ SubstanceEditorEngine.instance.InitializeInstance(graph, null, out SubstanceGraphSO _);
+ }
+
+ if (SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out _nativeGraph))
+ graph.RuntimeInitialize(_nativeGraph, graph.IsRuntimeOnly);
+
+ graph.Input[inputId].UpdateNativeHandle(_nativeGraph);
+ }
+
+ public static void RenderGraph(SubstanceGraphSO graph)
+ {
+ if (!SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out SubstanceNativeGraph _nativeGraph))
+ {
+ if (!SubstanceEditorEngine.instance.IsInitialized)
+ return;
+
+ SubstanceEditorEngine.instance.InitializeInstance(graph, null, out SubstanceGraphSO _);
+ }
+
+ if (SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out _nativeGraph))
+ {
+ SubstanceEditorEngine.instance.SubmitAsyncRenderWork(_nativeGraph, graph);
+ }
+ }
+
+ public static string CreatePresetFromCurrentState(SubstanceGraphSO graph)
+ {
+ if (!SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out SubstanceNativeGraph _nativeGraph))
+ {
+ if (!SubstanceEditorEngine.instance.IsInitialized)
+ return string.Empty;
+
+ SubstanceEditorEngine.instance.InitializeInstance(graph, null, out SubstanceGraphSO _);
+ }
+
+ if (SubstanceEditorEngine.instance.TryGetHandlerFromInstance(graph, out _nativeGraph))
+ graph.RuntimeInitialize(_nativeGraph, graph.IsRuntimeOnly);
+
+ return _nativeGraph.CreatePresetFromCurrentState();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs.meta
new file mode 100644
index 0000000..87f276a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/EditorTools.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9501269c4defb994083f07343a9de616
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs
new file mode 100644
index 0000000..23bc0ff
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs
@@ -0,0 +1,165 @@
+using Adobe.Substance;
+using Adobe.Substance.Input.Description;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+
+namespace Adobe.SubstanceEditor
+{
+ ///
+ /// Cached info for a substance input. Allow drawing UI without having to query description values from the SerializedProperty object.
+ ///
+ internal class SubstanceInputCachedInfo
+ {
+ ///
+ /// Input serialized property.
+ ///
+ public SerializedProperty InputProperty { get; }
+
+ ///
+ /// GUIContent for the drawing the input.
+ ///
+ public SubstanceInputGUIContent GUIContent { get; }
+
+ public int Index { get; }
+
+ public SubstanceInputCachedInfo(SerializedProperty inputProperty, SubstanceInputGUIContent GUIContent, int index)
+ {
+ this.InputProperty = inputProperty;
+ this.GUIContent = GUIContent;
+ Index = index;
+ }
+ }
+
+ internal class SubstanceInputGroupCachedInfo
+ {
+ public string Name { get; }
+
+ public List Inputs { get; }
+
+ public bool ShowGroup { get; set; }
+
+ public SubstanceInputGroupCachedInfo(string groupName)
+ {
+ Name = groupName;
+ Inputs = new List();
+ ShowGroup = false;
+ }
+ }
+
+ ///
+ /// Helper class for caching grouping information for inputs so we don't have to query them every UI draw.
+ ///
+ internal class GraphInputsGroupingHelper
+ {
+ ///
+ /// Readonly list with all input groups and their elements info.
+ ///
+ public IReadOnlyList InputGroups { get; }
+
+ ///
+ /// Groups with inputs that don't have grouping information.
+ ///
+ public SubstanceInputGroupCachedInfo GrouplessInputs { get; }
+
+ public GraphInputsGroupingHelper(SubstanceGraphSO graph, SerializedObject targetObject)
+ {
+ var GUIgroups = new List();
+ var graphInputs = targetObject.FindProperty("Input");
+ var groups = graph.Input.Select(a => a.Description.GuiGroup).Distinct();
+
+ foreach (var group in groups)
+ {
+ var groupInfo = new SubstanceInputGroupCachedInfo(group);
+
+ for (int i = 0; i < graph.Input.Count; i++)
+ {
+ var target = graph.Input[i];
+
+ if (target.Description.GuiGroup == group)
+ {
+ SubstanceInputGUIContent guiContent;
+
+ var graphInput = graphInputs.GetArrayElementAtIndex(i);
+ var dataProp = graphInput.FindPropertyRelative("Data");
+
+ target.TryGetNumericalDescription(out ISubstanceInputDescNumerical descNumerical);
+
+ switch (target.Description.Type)
+ {
+ case SubstanceValueType.Float:
+ guiContent = new SubstanceFloatGUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalFloat);
+ break;
+
+ case SubstanceValueType.Float2:
+ guiContent = new SubstanceFloat2GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalFloat2);
+ break;
+
+ case SubstanceValueType.Float3:
+ guiContent = new SubstanceFloat3GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalFloat3);
+ break;
+
+ case SubstanceValueType.Float4:
+ guiContent = new SubstanceFloat4GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalFloat4);
+ break;
+
+ case SubstanceValueType.Int:
+ guiContent = (target.Description.WidgetType == SubstanceWidgetType.ComboBox) ? new SubstanceIntComboBoxGUIContent(target.Description, descNumerical as SubstanceInputDescNumericalInt, dataProp) : new SubstanceIntGUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalInt);
+ break;
+
+ case SubstanceValueType.Int2:
+ guiContent = new SubstanceInt2GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalInt2);
+ break;
+
+ case SubstanceValueType.Int3:
+ guiContent = new SubstanceInt3GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalInt3);
+ break;
+
+ case SubstanceValueType.Int4:
+ guiContent = new SubstanceInt4GUIContent(target.Description, dataProp, descNumerical as SubstanceInputDescNumericalInt4);
+ break;
+
+ default:
+ guiContent = new SubstanceInputGUIContent(target.Description, dataProp);
+ break;
+ }
+
+ groupInfo.Inputs.Add(new SubstanceInputCachedInfo(graphInput, guiContent, i));
+ }
+ }
+
+ if (string.IsNullOrEmpty(groupInfo.Name))
+ {
+ if (GrouplessInputs == null)
+ GrouplessInputs = groupInfo;
+ else
+ GrouplessInputs.Inputs.AddRange(groupInfo.Inputs);
+ }
+ else
+ {
+ GUIgroups.Add(groupInfo);
+ }
+ }
+
+ InputGroups = GUIgroups;
+ }
+ }
+
+ internal class GraphOutputAlphaChannelsHelper
+ {
+ private readonly List _channels;
+
+ public GraphOutputAlphaChannelsHelper(SubstanceGraphSO graph)
+ {
+ _channels = new List { "source" };
+
+ foreach (var item in graph.Output.Where(a => a.IsAlphaAssignable).Select(b => b.Description.Label))
+ _channels.Add(item);
+ }
+
+ public string[] GetAlphaChannels(string label)
+ {
+ return _channels.Where(a => a != label).ToArray();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs.meta
new file mode 100644
index 0000000..0dd7d43
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/GraphInputsGroupingHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 613ef46be9575f44fbcb243ab26b4db4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs
new file mode 100644
index 0000000..fa405ea
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs
@@ -0,0 +1,19 @@
+using Adobe.Substance;
+using System.IO;
+
+namespace Adobe.SubstanceEditor
+{
+ public static class NamingExtensions
+ {
+ public static string GetAssociatedAssetPath(this SubstanceGraphSO graph, string name, string extension)
+ {
+ var fileName = Path.GetFileNameWithoutExtension(graph.AssetPath);
+ return Path.Combine(graph.OutputPath, $"{fileName}_{name}.{extension}");
+ }
+
+ public static string GetAssetFileName(this SubstanceGraphSO graph)
+ {
+ return Path.GetFileNameWithoutExtension(graph.AssetPath);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs.meta
new file mode 100644
index 0000000..005499b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/NamingExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5bf22d7a02c9e744483e24b116112bb8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs
new file mode 100644
index 0000000..72d9fda
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs
@@ -0,0 +1,68 @@
+using UnityEditor;
+using UnityEditor.Callbacks;
+using System.IO;
+using Adobe.Substance;
+
+namespace Adobe.SubstanceEditor
+{
+ public class SubstanceBuildUtils
+ {
+ [PostProcessBuildAttribute(1)]
+ public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject)
+ {
+ if (target == BuildTarget.StandaloneLinux64)
+ OnPostprocessBuildLinux(pathToBuiltProject);
+ else if (target == BuildTarget.StandaloneOSX)
+ OnPostprocessBuildMac(pathToBuiltProject);
+
+ SubstanceEditorEngine.instance.RefreshActiveInstances();
+ }
+
+ private static void OnPostprocessBuildLinux(string pathToBuiltProject)
+ {
+ var dataPath = pathToBuiltProject.Replace(".x86_64", "_Data");
+ var pluginsPath = Path.Combine(dataPath, "Plugins");
+
+ if (!Directory.Exists(pluginsPath))
+ Directory.CreateDirectory(pluginsPath);
+
+ var enginePath = Path.GetDirectoryName(PlatformUtils.GetEnginePath());
+ string[] files = Directory.GetFiles(enginePath);
+
+ foreach (string s in files)
+ {
+ var extension = Path.GetExtension(s);
+
+ if (string.Equals(extension, ".so") || string.Equals(extension, ".1"))
+ {
+ var fileName = Path.GetFileName(s);
+ var testination = Path.Combine(pluginsPath, fileName);
+ File.Copy(s, testination, true);
+ }
+ }
+ }
+
+ private static void OnPostprocessBuildMac(string pathToBuiltProject)
+ {
+ var pluginsPath = Path.Combine(Path.Combine(pathToBuiltProject, "Contents"), "PlugIns");
+
+ if (!Directory.Exists(pluginsPath))
+ Directory.CreateDirectory(pluginsPath);
+
+ var enginePath = Path.GetDirectoryName(PlatformUtils.GetEnginePath());
+ string[] files = Directory.GetFiles(enginePath);
+
+ foreach (string s in files)
+ {
+ var extension = Path.GetExtension(s);
+
+ if (string.Equals(extension, ".dylib") || string.Equals(extension, ".1"))
+ {
+ var fileName = Path.GetFileName(s);
+ var testination = Path.Combine(pluginsPath, fileName);
+ File.Copy(s, testination, true);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs.meta
new file mode 100644
index 0000000..fd38a03
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceBuildUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 18d63636c53acdc4680dd008426e63f6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs
new file mode 100644
index 0000000..da40c43
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs
@@ -0,0 +1,39 @@
+using Adobe.Substance;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class SubstanceFileExtensions
+ {
+ internal static List GetGraphs(this SubstanceFileSO fileSO)
+ {
+ var result = new List();
+
+ var path = AssetDatabase.GetAssetPath(fileSO);
+
+ string[] guids = AssetDatabase.FindAssets(string.Format("t:{0}", typeof(SubstanceGraphSO)));
+
+ for (int i = 0; i < guids.Length; i++)
+ {
+ string assetPath = AssetDatabase.GUIDToAssetPath(guids[i]);
+ SubstanceGraphSO graph = AssetDatabase.LoadAssetAtPath(assetPath);
+
+ if (graph != null)
+ {
+ var filePath = AssetDatabase.GetAssetPath(graph.RawData);
+
+ if (filePath.Equals(path, System.StringComparison.OrdinalIgnoreCase))
+ {
+ result.Add(graph);
+ }
+ }
+ }
+
+ return result;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs.meta
new file mode 100644
index 0000000..03c2423
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/SubstanceFileExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d88a151702771984bb824b8639661be1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs
new file mode 100644
index 0000000..934c731
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs
@@ -0,0 +1,121 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEditor;
+using UnityEngine;
+
+namespace Adobe.SubstanceEditor
+{
+ internal static class TextureUtils
+ {
+ public static bool IsCompressed(this TextureFormat unityFormat)
+ {
+ switch (unityFormat)
+ {
+ case TextureFormat.RGBA32:
+ case TextureFormat.RGBA64:
+ case TextureFormat.RGB24:
+ case TextureFormat.BGRA32:
+ case TextureFormat.R8:
+ case TextureFormat.R16:
+ case TextureFormat.RFloat:
+ return false;
+
+ default:
+ return true;
+ }
+ }
+
+ public static Texture2D SetReadableFlag(Texture2D pTexture, bool pReadable)
+ {
+ Texture2D texture = pTexture;
+
+ if (pTexture == null)
+ return null;
+
+ string assetPath = AssetDatabase.GetAssetPath(pTexture);
+
+ var textureImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
+ if (textureImporter != null)
+ {
+ if (textureImporter.isReadable == pReadable)
+ return pTexture;
+
+ textureImporter.isReadable = pReadable;
+ Debug.LogWarning(string.Format("Setting {0}'s 'Read/Write Enabled' flag to {1}",
+ pTexture.name, (pReadable ? "true" : "false")));
+
+ EditorUtility.SetDirty(textureImporter);
+ AssetDatabase.ImportAsset(assetPath);
+ AssetDatabase.Refresh();
+
+ texture = AssetDatabase.LoadMainAssetAtPath(assetPath) as Texture2D;
+ }
+
+ return texture;
+ }
+
+ public static Texture2D EnsureTextureCorrectness(Texture2D pTexture, bool ensureRGBA, bool enableMipMaps)
+ {
+ Texture2D texture = pTexture;
+
+ if (pTexture == null)
+ return null;
+
+ string assetPath = AssetDatabase.GetAssetPath(pTexture);
+
+ var textureImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter;
+
+ if (textureImporter != null)
+ {
+ bool changed = false;
+
+ if (textureImporter.textureCompression != TextureImporterCompression.Uncompressed)
+ {
+ textureImporter.textureCompression = TextureImporterCompression.Uncompressed;
+ Debug.LogWarning(string.Format("Setting {0}'s 'Compression' flag to Uncompressed", pTexture.name));
+ changed = true;
+ }
+
+ if (textureImporter.isReadable != true)
+ {
+ textureImporter.isReadable = true;
+ Debug.LogWarning(string.Format("Setting {0}'s 'Read/Write Enabled' flag to {1}",
+ pTexture.name, (true ? "true" : "false")));
+ changed = true;
+ }
+
+ if (textureImporter.maxTextureSize < 4096)
+ {
+ textureImporter.maxTextureSize = 4096;
+ changed = true;
+ }
+
+ if (enableMipMaps != textureImporter.mipmapEnabled)
+ {
+ textureImporter.mipmapEnabled = enableMipMaps;
+ changed = true;
+ }
+
+ if (ensureRGBA)
+ {
+ var defaultSettings = textureImporter.GetDefaultPlatformTextureSettings();
+
+ if (defaultSettings.format != TextureImporterFormat.RGBA32)
+ {
+ defaultSettings.format = TextureImporterFormat.RGBA32;
+ textureImporter.SetPlatformTextureSettings(defaultSettings);
+ changed = true;
+ }
+ }
+
+ if (changed)
+ {
+ AssetDatabase.ImportAsset(assetPath);
+ texture = AssetDatabase.LoadMainAssetAtPath(assetPath) as Texture2D;
+ }
+ }
+
+ return texture;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs.meta
new file mode 100644
index 0000000..92c9032
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Scripts/Utilities/TextureUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3f50142101ff97a409b03240bd12d0b6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Settings.meta b/Assets/Adobe/Substance3DForUnity/Editor/Settings.meta
new file mode 100644
index 0000000..e44544d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Settings.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 78d21cfe470a7ec4b9caa5d8b89c89b4
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.asset b/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.asset
new file mode 100644
index 0000000..8f7c72e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.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: 715e7c131b0ebdd48b77c2b2741d1dae, type: 3}
+ m_Name: SubstanceEditorSettings
+ m_EditorClassIdentifier:
+ _generateAllTexture: 0
+ _targetResolution: {x: 10, y: 10}
+ _targetTextureEngine: 0
diff --git a/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.asset.meta b/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.asset.meta
new file mode 100644
index 0000000..4fb70d6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Editor/Settings/SubstanceEditorSettings.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e686586dac7adb5429a0ca6dd01af373
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/HOWTO.pdf b/Assets/Adobe/Substance3DForUnity/HOWTO.pdf
new file mode 100644
index 0000000..82f4e97
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/HOWTO.pdf differ
diff --git a/Assets/Adobe/Substance3DForUnity/HOWTO.pdf.meta b/Assets/Adobe/Substance3DForUnity/HOWTO.pdf.meta
new file mode 100644
index 0000000..d5b1cb6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/HOWTO.pdf.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 30801c657a078c941a2391ec38ae57c4
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/README.md b/Assets/Adobe/Substance3DForUnity/README.md
new file mode 100644
index 0000000..c365c85
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/README.md
@@ -0,0 +1,14 @@
+Adobe Substance 3D for Unity
+=====
+The Substance 3D plugin enables you to load, apply, and tweak Substance parametric materials directly in Unity.
+Whether you are working on games, architectural visualization, virtual reality and or deploying across mobile, desktop or XR, Substance 3D delivers a unique experience with optimized features for enhanced productivity.
+
+**Work faster, be more productive**: Substance 3D parameters allow for real-time texture updates in editor or at runtime.
+Substance 3D for Unity contains the plugin for the **Substance Engine**
+Import and customize physically-based Substance materials created in Substance Designer with support for Unity Standard/Standard (specular) shader and HDRP.
+Please refer to the HOWTO guide to get started using Substance 3D for Unity. More detailed information will be available soon on our official documentation.
+Support or Questions? Email us at contact@substance3d.com.
+Known Issues:
+- Height map does not render correctly when using scanned Substance data with fixed output size
+- The documentation on https://substance3d.adobe.com/documentation/integrations/unity-170459323.html is outdated
+- Currently there is no option to toggle between CPU and GPU
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/README.md.meta b/Assets/Adobe/Substance3DForUnity/README.md.meta
new file mode 100644
index 0000000..5f8dcc3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/README.md.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9f965ac7ac1ee7d4da311dd8525582d2
+TextScriptImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime.meta b/Assets/Adobe/Substance3DForUnity/Runtime.meta
new file mode 100644
index 0000000..602793f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e7d6d85ed61bf2a4f8f6fd772abefb65
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef b/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef
new file mode 100644
index 0000000..5904a18
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef
@@ -0,0 +1,14 @@
+{
+ "name": "Adobe.Substance",
+ "rootNamespace": "Adobe.Substance",
+ "references": [],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": true,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef.meta
new file mode 100644
index 0000000..c423bdb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Adobe.Substance.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 0322a29457affe94ab4ade0a1555000f
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins.meta
new file mode 100644
index 0000000..acd0daa
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2692d856fc1b2d847a396ac35f24b247
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64.meta
new file mode 100644
index 0000000..92ae043
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 46e431de90cc3ad41ae5c68d3c4327f2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so
new file mode 100644
index 0000000..4938f61
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so.meta
new file mode 100644
index 0000000..1dd04e3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/Arm64/libsbsario.so.meta
@@ -0,0 +1,80 @@
+fileFormatVersion: 2
+guid: f292327062a6810428e455b714f2f512
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 0
+ Exclude Editor: 1
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 1
+ Exclude Win: 1
+ Exclude Win64: 1
+ Exclude iOS: 1
+ - first:
+ Android: Android
+ second:
+ enabled: 1
+ settings:
+ CPU: ARM64
+ - 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: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS.meta
new file mode 100644
index 0000000..ef9de81
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f63445da63b1674bb9c9be3e308044c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a
new file mode 100644
index 0000000..c2071b7
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a.meta
new file mode 100644
index 0000000..4dec6c4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalg.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: e0a6e848109591341ba75dea6bf29f90
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a
new file mode 100644
index 0000000..c11493a
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a.meta
new file mode 100644
index 0000000..358dc22
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libalgcompression.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: a37bf4502d5eba940a4b499e4d910313
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a
new file mode 100644
index 0000000..6775fb0
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a.meta
new file mode 100644
index 0000000..a461dcc
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_common.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 2ed861b8ad9cf134d9346119598a0077
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a
new file mode 100644
index 0000000..36d1b70
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a.meta
new file mode 100644
index 0000000..3238bdf
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_renderer.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 3b4f4fd55d63b504d90f82cfd68f7560
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a
new file mode 100644
index 0000000..775efc3
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a.meta
new file mode 100644
index 0000000..382e10d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libintegrations_system.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 9385a5707a08acd4188a9d0e7d19208d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a
new file mode 100644
index 0000000..a055f0c
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a.meta
new file mode 100644
index 0000000..289149a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libpfxlinkercommon.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 74ea479585b771c48a04186006069101
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a
new file mode 100644
index 0000000..c3ae83c
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a.meta
new file mode 100644
index 0000000..85b04b6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: d905326978f74624f994ee7bb628ce0d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a
new file mode 100644
index 0000000..b519e89
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a.meta
new file mode 100644
index 0000000..3642b82
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsbsario_details.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: e08a9991e3778e64c9323d393fbd26d9
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a
new file mode 100644
index 0000000..c73ab3a
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a.meta
new file mode 100644
index 0000000..e6eda23
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_framework.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: ddcf6efef31d2044290c96caeadd7572
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a
new file mode 100644
index 0000000..8fdefb8
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a.meta
new file mode 100644
index 0000000..aa3126b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_linker.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 29d7bb04e5a0eb74cb9fbd606b5b6d68
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a
new file mode 100644
index 0000000..8741bce
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a.meta
new file mode 100644
index 0000000..d9a070f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libsubstance_neon_blend.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: b7d6442d267fd094ebd9e94276c83b69
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a
new file mode 100644
index 0000000..bed9a71
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a.meta
new file mode 100644
index 0000000..8b3754f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/iOS/libtinyxml.a.meta
@@ -0,0 +1,73 @@
+fileFormatVersion: 2
+guid: 10342a6a05fbf4a4a8a1914e7b3dc984
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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:
+ 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: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib
new file mode 100644
index 0000000..f05f14e
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib.meta
new file mode 100644
index 0000000..a1e7891
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.dylib.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: e913fe577a00848c58367b3e775b8a2c
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - 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: None
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so
new file mode 100644
index 0000000..7fe8ee8
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so.meta
new file mode 100644
index 0000000..c49da55
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsbsario.so.meta
@@ -0,0 +1,80 @@
+fileFormatVersion: 2
+guid: 9b40b6fe75dcdffaf9b0b0db569525bd
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 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: Linux
+ - 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: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib
new file mode 100644
index 0000000..7dccc68
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib.meta
new file mode 100644
index 0000000..59e1694
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.8.dylib.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 83c4ed4f0caed42c79425b0cb8b00d09
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - 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: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib
new file mode 100644
index 0000000..47a43c3
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib.meta
new file mode 100644
index 0000000..09fcdba
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.dylib.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 3325deba0a25449c5bd2426efc23e7ed
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - 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: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so
new file mode 100644
index 0000000..23b18b8
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8 b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8
new file mode 100644
index 0000000..23b18b8
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8 differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8.meta
new file mode 100644
index 0000000..6162bc7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.8.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: aa766c947c990fd4d8e34e0954b8a804
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.meta
new file mode 100644
index 0000000..d17c2bc
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_linker.so.meta
@@ -0,0 +1,80 @@
+fileFormatVersion: 2
+guid: b9441c23298894c028d4e1f5263e719e
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 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: Linux
+ - 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: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib
new file mode 100644
index 0000000..f775617
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib.meta
new file mode 100644
index 0000000..097ed72
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_mtl_blend.dylib.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 576b1a9b12cf24674bcf8e9a334f688c
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - 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: AnyCPU
+ - first:
+ Standalone: Win
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ - first:
+ Standalone: Win64
+ second:
+ enabled: 0
+ settings:
+ CPU: None
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so
new file mode 100644
index 0000000..3b1ebeb
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so.meta
new file mode 100644
index 0000000..5353205
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/libsubstance_ogl3_blend.so.meta
@@ -0,0 +1,80 @@
+fileFormatVersion: 2
+guid: 659d27409e79e7740ad0aebc20f2090f
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ : Any
+ second:
+ enabled: 0
+ settings:
+ Exclude Android: 1
+ Exclude Editor: 1
+ Exclude Linux64: 1
+ Exclude OSXUniversal: 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: Linux
+ - 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: 0
+ settings:
+ AddToEmbeddedBinaries: false
+ CPU: AnyCPU
+ CompileFlags:
+ FrameworkDependencies:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll
new file mode 100644
index 0000000..1e6b7bd
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll.meta
new file mode 100644
index 0000000..167ef24
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/sbsario.dll.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 6e45d854f55a342e6b904a84e42d4e69
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: x86_64
+ DefaultValueInitialized: true
+ OS: Windows
+ - 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
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll
new file mode 100644
index 0000000..66529c1
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll.meta
new file mode 100644
index 0000000..2ef6cd5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_d3d11pc_blend.dll.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 4d93358a4514fe54981d37196b1bb9c7
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: x86_64
+ DefaultValueInitialized: true
+ OS: Windows
+ - 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
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll
new file mode 100644
index 0000000..f683634
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll.meta
new file mode 100644
index 0000000..ede28c2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_linker.dll.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 0634149143729f44a8289f223ec04b08
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 0
+ settings:
+ CPU: x86_64
+ DefaultValueInitialized: true
+ OS: Windows
+ - 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
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll
new file mode 100644
index 0000000..ec31eb6
Binary files /dev/null and b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll differ
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll.meta
new file mode 100644
index 0000000..3524399
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Plugins/substance_sse2_blend.dll.meta
@@ -0,0 +1,63 @@
+fileFormatVersion: 2
+guid: 9a1f1618673081b4888cd4178c7ef44a
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 1
+ 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
+ - 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
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime.meta
new file mode 100644
index 0000000..11abc70
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5001d7f81c5fded4781b3133e0d6bb6c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef
new file mode 100644
index 0000000..9ebba17
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef
@@ -0,0 +1,16 @@
+{
+ "name": "Adobe.Substance.Runtime",
+ "rootNamespace": "Adobe.Substance.Runtime",
+ "references": [
+ "GUID:0322a29457affe94ab4ade0a1555000f"
+ ],
+ "includePlatforms": [],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef.meta
new file mode 100644
index 0000000..7c87d50
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Adobe.Substance.Runtime.asmdef.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: b78cd19d3dcc04e4a8eb1915990b2db1
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts.meta
new file mode 100644
index 0000000..bbc0878
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c55ef6bd36342094da997a93adfbc20b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs
new file mode 100644
index 0000000..ca677ca
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs
@@ -0,0 +1,75 @@
+using System;
+using System.Collections;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Runtime
+{
+ ///
+ /// Singleton class that handles Substance engine initialization and it is used to get native handlers to substance instances.
+ ///
+ public class SubstanceRuntime : MonoBehaviour
+ {
+ ///
+ /// Singleton instance.
+ ///
+ /// Global singleton instance.
+ public static SubstanceRuntime Instance
+ {
+ get
+ {
+ if (_instance != null)
+ {
+ _instance.Initialize();
+ return _instance;
+ }
+
+ _instance = FindObjectOfType();
+
+ if (_instance != null)
+ {
+ _instance.Initialize();
+ return _instance;
+ }
+
+ var go = new GameObject("SubstanceRuntime");
+ _instance = go.AddComponent();
+
+ _instance.Initialize();
+ return _instance;
+ }
+ }
+
+ private static SubstanceRuntime _instance = null;
+
+ private static bool _isInitialized = false;
+
+ ///
+ /// Handles initialization of the substance engine.
+ ///
+ private void Initialize()
+ {
+ if (_isInitialized)
+ return;
+
+ var enginePath = PlatformUtils.GetEnginePath();
+ var pluginPath = PlatformUtils.GetPluginPath();
+ Engine.Initialize(pluginPath, enginePath);
+ _isInitialized = true;
+ }
+
+ ///
+ /// Creates a Substance SDK handle for a given SubstanceGraphSO.
+ ///
+ /// Target SubstanceGraphSO
+ /// Handle that comunicates with the Substance SDK.
+ public SubstanceNativeGraph InitializeInstance(SubstanceGraphSO substanceInstance)
+ {
+ if (substanceInstance == null)
+ return null;
+
+ return Engine.OpenFile(substanceInstance.RawData.FileContent, substanceInstance.GetNativeID());
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs.meta
new file mode 100644
index 0000000..9c733fb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntime.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9cc8c095ad4295641a186d6bde15d308
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs
new file mode 100644
index 0000000..0026b20
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs
@@ -0,0 +1,688 @@
+using Adobe.Substance.Input;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using UnityEngine;
+
+namespace Adobe.Substance.Runtime
+{
+ ///
+ /// Class that provides runtime functionality to modify inputs at and render substance graphs, allowing SubstanceGraphSO to generate its assets at runtime.
+ ///
+ public class SubstanceRuntimeGraph : MonoBehaviour
+ {
+ ///
+ /// Target substance instance.
+ ///
+ [SerializeField]
+ public SubstanceGraphSO GraphSO;
+
+ ///
+ /// Native handler to the substance SDK object.
+ ///
+ private SubstanceNativeGraph _nativeGraph;
+
+ ///
+ /// Main material generated by the substance instance.
+ ///
+ public Material DefaulMaterial => GraphSO.OutputMaterial;
+
+ ///
+ /// Concurrent queue that handles results of substance render operations.
+ ///
+ ///
+ private readonly ConcurrentQueue _asyncRenderQueue = new ConcurrentQueue();
+
+ ///
+ /// Dictionary to cache substance inputs by name.
+ ///
+ ///
+ private readonly Dictionary _inputsTable = new Dictionary();
+
+ ///
+ /// Dictionary that caches substance outputs by name.
+ ///
+ ///
+ private readonly Dictionary _outputTable = new Dictionary();
+
+ ///
+ /// Resoltion input.
+ ///
+ private SubstanceInputInt2 _resolutionInput;
+
+ ///
+ /// On awake SubstanceRuntime will be used to create a instance for the attached SubstanceGraphSO in the substance SDK.
+ ///
+ protected void Awake()
+ {
+ if (GraphSO == null)
+ return;
+
+ if (_nativeGraph != null)
+ return;
+
+ _nativeGraph = SubstanceRuntime.Instance.InitializeInstance(GraphSO);
+ InitializeGraph(GraphSO);
+ }
+
+ ///
+ /// Generate assets for the target graph and populates the inputs and outputs dictionaries.
+ ///
+ /// Target graph.
+ private void InitializeGraph(SubstanceGraphSO graph)
+ {
+ graph.RuntimeInitialize(_nativeGraph, true);
+
+ foreach (var input in graph.Input)
+ {
+ _inputsTable.Add(input.Description.Identifier, input as SubstanceInputBase);
+
+ if (input.ValueType == SubstanceValueType.Int2 && input.Description.Identifier == "$outputsize")
+ _resolutionInput = input as SubstanceInputInt2;
+ }
+
+ foreach (var output in graph.Output)
+ {
+ if (!_outputTable.ContainsKey(output.Description.Identifier))
+ {
+ _outputTable.Add(output.Description.Identifier, output);
+ }
+ }
+ }
+
+ ///
+ /// Check the render ConcurrentQueue for render results.
+ ///
+ protected void Update()
+ {
+ while (_asyncRenderQueue.TryDequeue(out AsyncRenderResult result))
+ {
+ if (result.Exception != null)
+ {
+ result.Tcs.SetException(result.Exception);
+ continue;
+ }
+
+ GraphSO.UpdateOutputTextures(result.RenderResult);
+ result.Tcs.SetResult(null);
+ }
+ }
+
+ ///
+ /// Attaches a new graph object to this runtime handler.
+ ///
+ /// Target substance graph.
+ public void AttachGraph(SubstanceGraphSO graph)
+ {
+ GraphSO = graph;
+ }
+
+ ///
+ /// Disposes the substance SDK handler.
+ ///
+ protected void OnDestroy()
+ {
+ if (_nativeGraph != null)
+ _nativeGraph.Dispose();
+ }
+
+ #region Input Handle
+
+ ///
+ /// Update Substance Float Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputFloat(string inputName, float value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float}.");
+
+ _nativeGraph.SetInputFloat(input.Index, value);
+ }
+
+ ///
+ /// Get Substance Float Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public float GetInputFloat(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float}.");
+
+ return _nativeGraph.GetInputFloat(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector2 Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputVector2(string inputName, Vector2 value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float2)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float2}.");
+
+ _nativeGraph.SetInputFloat2(input.Index, value);
+ }
+
+ ///
+ /// Get Substance Vector2 Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Vector2 GetInputVector2(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float2)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float2}.");
+
+ return _nativeGraph.GetInputFloat2(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector3 Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputVector3(string inputName, Vector3 value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float3)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float3}.");
+
+ _nativeGraph.SetInputFloat3(input.Index, value);
+ }
+
+ ///
+ /// Get Substance Vector3 Input.
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Vector3 GetInputVector3(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float3)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float3}.");
+
+ return _nativeGraph.GetInputFloat3(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector4 Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputVector4(string inputName, Vector4 value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float4}.");
+
+ _nativeGraph.SetInputFloat4(input.Index, value);
+ }
+
+ ///
+ /// Get Substance Vector4 Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Vector4 GetInputVector4(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float4}.");
+
+ return _nativeGraph.GetInputFloat4(input.Index);
+ }
+
+ ///
+ /// Update Substance Color Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputColor(string inputName, Color value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float3 && input.ValueType != SubstanceValueType.Float4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float4} or {SubstanceValueType.Float3}.");
+
+ if (input.ValueType == SubstanceValueType.Float3)
+ {
+ var vector = new Vector3
+ {
+ x = value.r,
+ y = value.g,
+ z = value.b
+ };
+
+ _nativeGraph.SetInputFloat3(input.Index, vector);
+ }
+ else if (input.ValueType == SubstanceValueType.Float4)
+ {
+ _nativeGraph.SetInputFloat4(input.Index, value);
+ }
+ }
+
+ ///
+ /// Get Substance Color
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Color GetInputColor(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Float3 && input.ValueType != SubstanceValueType.Float4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Float4} or {SubstanceValueType.Float3}.");
+
+ if (input.ValueType == SubstanceValueType.Float3)
+ {
+ Vector3 vector = _nativeGraph.GetInputFloat3(input.Index);
+ return new Color(vector.x, vector.y, vector.z);
+ }
+ else if (input.ValueType == SubstanceValueType.Float4)
+ {
+ Vector4 vector = _nativeGraph.GetInputFloat4(input.Index);
+ return new Color(vector.x, vector.y, vector.z, vector.w);
+ }
+ else
+ throw new ArgumentException();
+ }
+
+ ///
+ /// Update Substance Boolean Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update parameter
+ public void SetInputBool(string inputName, bool value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int}.");
+
+ _nativeGraph.SetInputInt(input.Index, value ? 1 : 0);
+ }
+
+ ///
+ /// Get Substance Boolean Input.
+ ///
+ /// Name of the input in the SBSAR.
+ /// Current input value.
+ public bool GetInputBool(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int}.");
+
+ return _nativeGraph.GetInputInt(input.Index) == 1;
+ }
+
+ ///
+ /// Update Substance Int Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update the parameter
+ public void SetInputInt(string inputName, int value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int}.");
+
+ _nativeGraph.SetInputInt(input.Index, value);
+ }
+
+ ///
+ /// Get Substance Int Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public int GetInputInt(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int}.");
+
+ return _nativeGraph.GetInputInt(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector2Int Input.
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update the parameter.
+ public void SetInputVector2Int(string inputName, Vector2Int value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int2)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int2}.");
+
+ _nativeGraph.SetInputInt2(input.Index, value);
+ }
+
+ ///
+ /// Get array of 2 int.
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Vector2Int GetInputVector2Int(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int2)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int2}.");
+
+ return _nativeGraph.GetInputInt2(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector3Int Input.
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update the parameter.
+ public void SetInputVector3Int(string inputName, Vector3Int value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int3)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int3}.");
+
+ _nativeGraph.SetInputInt3(input.Index, value);
+ }
+
+ ///
+ /// Get array of 3 int (Vector3Int’s x, y & z values)
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public Vector3Int GetInputVector3Int(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int3)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int3}.");
+
+ return _nativeGraph.GetInputInt3(input.Index);
+ }
+
+ ///
+ /// Update Substance Vector4Int Input
+ ///
+ /// Name of the input in the SBSAR
+ /// Value used to update the parameter
+ /// Value used to update the parameter
+ /// Value used to update the parameter
+ /// Value used to update the parameter
+ public void SetInputVector4Int(string inputName, int x, int y, int z, int w)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int4}.");
+
+ _nativeGraph.SetInputInt4(input.Index, x, y, z, w);
+ }
+
+ ///
+ /// Get array of 4 int (Vector4Int’s x, y, z & w values)
+ ///
+ /// Name of the input in the SBSAR
+ /// Current input value.
+ public int[] GetInputVector4Int(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Int4)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Int4}.");
+
+ return _nativeGraph.GetInputInt4(input.Index);
+ }
+
+ ///
+ /// Update Substance string Input.
+ ///
+ /// Name of the input in the SBSAR.
+ /// Value used to update the parameter.
+ public void SetInputString(string inputName, string value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.String)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.String}.");
+
+ _nativeGraph.SetInputString(input.Index, value);
+ }
+
+ ///
+ /// Get Substance string input.
+ ///
+ /// Name of the input in the SBSAR.
+ /// Input current value.
+ public string GetInputString(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.String)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.String}.");
+
+ return _nativeGraph.GetInputString(input.Index);
+ }
+
+ ///
+ /// Returns the complete input description for the target input name.
+ ///
+ /// Target input name.
+ /// Complete input description for the target input.
+ public SubstanceInputDescription GetInputDescription(string inputName)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ return input.Description;
+ }
+
+ ///
+ /// Update Substance Texture2D Input.
+ ///
+ /// Name of the input in the SBSAR
+ /// value used to update the parameter
+ public void SetInputTexture(string inputName, Texture2D value)
+ {
+ if (!TryGetInput(inputName, out SubstanceInputBase input))
+ throw new ArgumentException($"No Substance Input found with name {inputName}");
+
+ if (input.ValueType != SubstanceValueType.Image)
+ throw new ArgumentException($"Substance Input {inputName} is of type {input.ValueType} not {SubstanceValueType.Image}.");
+
+ if (value == null)
+ throw new ArgumentException("Texture can not be null.");
+
+ if (!value.isReadable)
+ throw new ArgumentException("Texture must be readable");
+
+ var pixels = value.GetPixels32();
+ _nativeGraph.SetInputTexture2D(input.Index, pixels, value.width, value.height);
+ }
+
+ ///
+ /// Returns instance texture output resoltion.
+ ///
+ /// Current output resolution
+ public Vector2Int GetTexturesResolution()
+ {
+ return _nativeGraph.GetInputInt2(_resolutionInput.Index);
+ }
+
+ ///
+ /// Sets instance texture output resolution.
+ ///
+ ///
+ public void SetTexturesResolution(Vector2Int size)
+ {
+ _nativeGraph.SetInputInt2(_resolutionInput.Index, size);
+ }
+
+ ///
+ /// Returns true if this substance instance has an input with a given name.
+ ///
+ /// Input name.
+ /// TRUE if substance instance has input with the given name.
+ public bool HasInput(string inputName)
+ {
+ return _inputsTable.ContainsKey(inputName);
+ }
+
+ private bool TryGetInput(string name, out Input.SubstanceInputBase input)
+ {
+ return _inputsTable.TryGetValue(name, out input);
+ }
+
+ #endregion Input Handle
+
+ #region Output Handle
+
+ ///
+ /// Returns a list with all output textures for the substance instance.
+ ///
+ /// Output texture.
+ public List GetGeneratedTextures()
+ {
+ return _outputTable.Values.Select(a => a.OutputTexture).ToList();
+ }
+
+ ///
+ /// Returns the output texture for a given output name.
+ ///
+ /// Output name.
+ /// Output texture.
+ public Texture2D GetOutputTexture(string outputName)
+ {
+ return _outputTable[outputName].OutputTexture;
+ }
+
+ #endregion Output Handle
+
+ #region Render
+
+ ///
+ /// Renders the substance instance synchronously.
+ ///
+ public void Render()
+ {
+ var result = _nativeGraph.Render();
+ GraphSO.UpdateOutputTextures(result);
+ }
+
+ ///
+ /// Renders the substance instance asynchronously.
+ ///
+ /// Task that will finish once render is done.
+ public Task RenderAsync()
+ {
+ TaskCompletionSource tcs = new TaskCompletionSource();
+ Task.Run(() =>
+ {
+ try
+ {
+ var result = _nativeGraph.Render();
+ _asyncRenderQueue.Enqueue(new AsyncRenderResult(result, tcs));
+ }
+ catch (Exception e)
+ {
+ _asyncRenderQueue.Enqueue(new AsyncRenderResult(e));
+ }
+ });
+
+ return tcs.Task;
+ }
+
+ #endregion Render
+
+ #region Preset
+
+ ///
+ /// Uses a preset XML to set graph input parameters.
+ ///
+ /// Preset XML data.
+ public void LoadPreset(string presetXML)
+ {
+ _nativeGraph.ApplyPreset(presetXML);
+ }
+
+ ///
+ /// Saves the current graph state into a preset XML.
+ ///
+ /// Preset created using the current state of the graph inputs.
+ public string CreatePresetFromCurrentState()
+ {
+ return _nativeGraph.CreatePresetFromCurrentState();
+ }
+
+ #endregion Preset
+
+ ///
+ /// Internal class to store substance instance render result.
+ ///
+ private class AsyncRenderResult
+ {
+ public IntPtr RenderResult { get; }
+ public TaskCompletionSource Tcs { get; }
+ public Exception Exception { get; }
+
+ public AsyncRenderResult(IntPtr renderResult, TaskCompletionSource tcs)
+ {
+ RenderResult = renderResult;
+ Tcs = tcs;
+ Exception = null;
+ }
+
+ public AsyncRenderResult(Exception exception)
+ {
+ Exception = exception;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs.meta
new file mode 100644
index 0000000..4068b9f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Runtime/Scripts/SubstanceRuntimeGraph.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e55000a806abc674ab02756e3975eaf7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts.meta
new file mode 100644
index 0000000..29a7d91
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e2e31b77766f89e499acb2692c36fb74
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs
new file mode 100644
index 0000000..59baa42
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs
@@ -0,0 +1,148 @@
+using System;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+using Unity.Collections.LowLevel.Unsafe;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public class Engine
+ {
+ private enum LoadState : uint
+ {
+ Engine_Unloaded = 0x00u, //!< Engine is currently not loaded
+ Engine_Loaded = 0x02u, //!< The engine is loaded
+ Engine_FatalError = 0x04u, //!< An unrecoverable error has occurred
+ }
+
+ private static LoadState sLoadState = LoadState.Engine_Unloaded;
+
+ public static bool IsInitialized => sLoadState == LoadState.Engine_Loaded;
+
+#if (UNITY_IOS || UNITY_ANDROID) && !UNITY_EDITOR
+ private const int MAX_TEXTURE_SIZE = 512;
+ private const int MEMORY_BUGET = 512;
+#else
+ private const int MEMORY_BUGET = 2048;
+#endif
+
+ public static string Version()
+ {
+ var version_ptr = NativeMethods.sbsario_get_version();
+ return Marshal.PtrToStringAnsi(version_ptr);
+ }
+
+ public static string GetHash()
+ {
+ var version_ptr = NativeMethods.sbsario_get_hash();
+ return Marshal.PtrToStringAnsi(version_ptr);
+ }
+
+ //! @brief Initialize the Substance Engine
+ //! @param modulePath Path to the native module, only used if native module
+ //! dynamic loading is enabled in the managed library
+ //! @param enginePath Path to the Substance engine on disk, only used if
+ //! dynamic engine loading is enabled in the native library
+ public static void Initialize(string pluginPath, string enginePath)
+ {
+ if (sLoadState == LoadState.Engine_Loaded)
+ return;
+
+ IntPtr memoryBudget = (IntPtr)MEMORY_BUGET;
+
+ var code = (ErrorCode)NativeMethods.sbsario_initialize(pluginPath, enginePath, memoryBudget);
+
+ // On success, set the engine state to loaded
+ if (code == ErrorCode.SBSARIO_ERROR_OK)
+ sLoadState = LoadState.Engine_Loaded;
+
+ if (code != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(code);
+ }
+
+ public static void Initialize()
+ {
+ if (sLoadState == LoadState.Engine_Loaded)
+ return;
+
+ IntPtr memoryBudget = (IntPtr)MEMORY_BUGET;
+
+ var code = (ErrorCode)NativeMethods.sbsario_initialize(null, null, memoryBudget);
+
+ if (sLoadState == LoadState.Engine_Unloaded)
+ {
+ // On success, set the engine state to loaded
+ if (code == ErrorCode.SBSARIO_ERROR_OK)
+ sLoadState = LoadState.Engine_Loaded;
+ }
+
+ if (code != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(code);
+ }
+
+ public static void Shutdown()
+ {
+ var code = (ErrorCode)NativeMethods.sbsario_shutdown();
+
+ if (sLoadState == LoadState.Engine_Loaded)
+ {
+ // On success, set the engine to an unloaded state
+ if (code == ErrorCode.SBSARIO_ERROR_OK)
+ sLoadState = LoadState.Engine_Unloaded;
+ }
+
+ if (code != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(code);
+ }
+
+ public static SubstanceNativeGraph OpenFile(byte[] data, int graphID)
+ {
+ if (sLoadState != LoadState.Engine_Loaded)
+ throw new ArgumentException("Engine must be loaded before creating Native Handler");
+
+ var substanceFile = new SubstanceNativeGraph(data, graphID);
+ return substanceFile;
+ }
+
+ ///
+ /// Get the total graph count for this substance object.
+ ///
+ /// Total graph count.
+ public static int GetFileGraphCount(byte[] fileContent)
+ {
+ int size = Marshal.SizeOf(fileContent[0]) * fileContent.Length;
+ var nativeMemory = Marshal.AllocHGlobal(size);
+ Marshal.Copy(fileContent, 0, nativeMemory, size);
+
+ try
+ {
+ var handler = NativeMethods.sbsario_sbsar_load_from_memory(nativeMemory, (IntPtr)size);
+
+ if (handler == default)
+ throw new ArgumentException();
+
+ return (int)NativeMethods.sbsario_sbsar_get_graph_count(handler);
+ }
+ finally
+ {
+ if (nativeMemory != default)
+ Marshal.FreeHGlobal(nativeMemory);
+ }
+ }
+
+ private static double InvPow(double pBase, double pResult)
+ {
+ double exposent = Math.Log(pResult) / Math.Log(pBase);
+ return exposent;
+ }
+
+ private static bool IsPowerOfTwo(double number)
+ {
+ double log = Math.Log(number, 2);
+ double pow = Math.Pow(2, Math.Round(log));
+ return pow == number;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs.meta
new file mode 100644
index 0000000..3013040
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Engine.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2e9d31db8a6b5b544b6a12387f39d7e5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions.meta
new file mode 100644
index 0000000..25fc6c8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 33b96c1a3b96fcb45b2fa65b50de541b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs
new file mode 100644
index 0000000..a50e95a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.Serialization;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public class SubstanceNotInitializedException : Exception
+ {
+ }
+
+ public class SubstanceEngineNotFoundException : Exception
+ {
+ public SubstanceEngineNotFoundException(string engine) : base($"Substance engine not found {engine}")
+ {
+ }
+ }
+
+ public class SubstanceException : Exception
+ {
+ internal SubstanceException(ErrorCode code) : base(code.GetMessage())
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs.meta
new file mode 100644
index 0000000..a6f9eeb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Exceptions/SubstanceException.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 09b34d2c2d194da42bec016057a9ba68
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs.meta
new file mode 100644
index 0000000..60ca848
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 551ddb489d69d334986aac5d60ec4660
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs
new file mode 100644
index 0000000..54c7a2f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ //! @brief Numeric type union
+ //! @note The size will need to be changed if the API
+ [StructLayout(LayoutKind.Explicit, Size = 16)]
+ internal struct DataInternalNumeric
+ {
+ [FieldOffset(0)]
+ public int mIntData0;
+
+ [FieldOffset(4)]
+ public int mIntData1;
+
+ [FieldOffset(8)]
+ public int mIntData2;
+
+ [FieldOffset(12)]
+ public int mIntData3;
+
+ [FieldOffset(0)]
+ public float mFloatData0;
+
+ [FieldOffset(4)]
+ public float mFloatData1;
+
+ [FieldOffset(8)]
+ public float mFloatData2;
+
+ [FieldOffset(12)]
+ public float mFloatData3;
+
+ [FieldOffset(0)]
+ public IntPtr mPtr;
+
+ [FieldOffset(0)]
+ public NativeDataImage ImageData;
+ }
+
+ //! @brief Separate type for outputs
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs.meta
new file mode 100644
index 0000000..7443d5c
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/DataInternalNumeric.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 81de55a495f8b1c46be3fa485ad32aa0
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums.meta
new file mode 100644
index 0000000..e025d45
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4f96894eae7ca5a4abd70a163c1e956e
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs
new file mode 100644
index 0000000..fa5dbf6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs
@@ -0,0 +1,12 @@
+namespace Adobe.Substance
+{
+ //! @brief Enum type mapping from sbsario to C#
+ internal enum ErrorCode : uint
+ {
+ SBSARIO_ERROR_OK = 0x00u, //!< No error has occurred
+ SBSARIO_ERROR_STATE = 0x01u, //!< Call made with an invalid state
+ SBSARIO_ERROR_INVALID = 0x02u, //!< An invalid argument was given to the api
+ SBSARIO_ERROR_UNKNOWN = 0x03u, //!< An unspecified error has occurred
+ SBSARIO_ERROR_FAILURE = 0x04u, //!< The operation failed to complete
+ }
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs.meta
new file mode 100644
index 0000000..0311de2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ErrorCode.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7b566521bda0b2c47a8cc502717e65b4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs
new file mode 100644
index 0000000..b72f777
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ internal enum HVFlip
+ {
+ SBSARIO_HVFLIP_NO = 0x0, //!< No flipping (default value)
+ SBSARIO_HVFLIP_HORIZONTAL = 0x1, //!< Horizontal flip
+ SBSARIO_HVFLIP_VERTICAL = 0x2, //!< Vertical flip
+ SBSARIO_HVFLIP_BOTH = 0x3 //!< Horizontal and Vertical flip
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs.meta
new file mode 100644
index 0000000..7ef79a2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/HVFlip.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9687bfad244a5d749b109a35754b97e2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs
new file mode 100644
index 0000000..323b60f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs
@@ -0,0 +1,64 @@
+namespace Adobe.Substance
+{
+ //! @brief Image format
+ internal enum ImageFormat : int
+ {
+ // 2 bits reserved for the bytes per channel
+ SBSARIO_IMAGE_FORMAT_8B = 0x00,
+
+ SBSARIO_IMAGE_FORMAT_16B = 0x01,
+ SBSARIO_IMAGE_FORMAT_32B = 0x02,
+ /* Unused - 0x03u */
+ SBSARIO_IMAGE_FORMAT_BITDEPTH_MASK = 0x03,
+
+ // 2 bits reserved for the number of channels
+ SBSARIO_IMAGE_FORMAT_RGBA = 0x00,
+
+ SBSARIO_IMAGE_FORMAT_RGBX = 0x04,
+ SBSARIO_IMAGE_FORMAT_RGB = 0x08,
+ SBSARIO_IMAGE_FORMAT_L = 0x0c,
+ SBSARIO_IMAGE_FORMAT_CHANNELS_MASK = 0x0c,
+
+ // 1 bit to determine integer or floating point
+ SBSARIO_IMAGE_FORMAT_INT = 0x00,
+
+ SBSARIO_IMAGE_FORMAT_FLOAT = 0x10,
+
+ /* Format (2 bits) */
+ SBSARIO_IMAGE_FORMAT_PF_RAW = 0x0, /**< Non-compressed flag */
+ SBSARIO_IMAGE_FORMAT_PF_BC = 0x1 << 6, /**< DXT compression flag */
+ SBSARIO_IMAGE_FORMAT_PF_PVRTC = 0x3 << 6, /**< PVRTC compression flag */
+ SBSARIO_IMAGE_FORMAT_PF_ETC = 0x3 << 6, /**< ETC compression flag */
+ SBSARIO_IMAGE_FORMAT_PF_Misc = 0x2 << 6, /**< Other compression flag */
+ SBSARIO_IMAGE_FORMAT_PF_MASK_RAWFormat = 0x3 << 6,
+
+ // Combine integer and float bitfields to create more complex image types
+ SBSARIO_IMAGE_FORMAT_8I = SBSARIO_IMAGE_FORMAT_8B | SBSARIO_IMAGE_FORMAT_INT,
+
+ SBSARIO_IMAGE_FORMAT_16I = SBSARIO_IMAGE_FORMAT_16B | SBSARIO_IMAGE_FORMAT_INT,
+ SBSARIO_IMAGE_FORMAT_16F = SBSARIO_IMAGE_FORMAT_16B | SBSARIO_IMAGE_FORMAT_FLOAT,
+ SBSARIO_IMAGE_FORMAT_32F = SBSARIO_IMAGE_FORMAT_32B | SBSARIO_IMAGE_FORMAT_FLOAT,
+ SBSARIO_IMAGE_FORMAT_PRECISION_MASK = SBSARIO_IMAGE_FORMAT_BITDEPTH_MASK | 0x10
+ }
+
+ //! @brief Enum representing the order of the output channels
+ internal enum ChannelOrder : uint
+ {
+ SBSARIO_CHANNEL_ORDER_INVALID = 0x00u,
+
+ SBSARIO_CHANNEL_ORDER_RGBA = 0xe4u,
+ SBSARIO_CHANNEL_ORDER_BGRA = 0xc6u,
+ SBSARIO_CHANNEL_ORDER_ABGR = 0x1bu,
+ SBSARIO_CHANNEL_ORDER_ARGB = 0x39u,
+
+ SBSARIO_CHANNEL_RED_MASK = 0x03u,
+ SBSARIO_CHANNEL_GREEN_MASK = 0x0cu,
+ SBSARIO_CHANNEL_BLUE_MASK = 0x30u,
+ SBSARIO_CHANNEL_ALPHA_MASK = 0xc0u,
+
+ SBSARIO_CHANNEL_RED_RSHIFT = 0x00u,
+ SBSARIO_CHANNEL_GREEN_RSHIFT = 0x02u,
+ SBSARIO_CHANNEL_BLUE_RSHIFT = 0x04u,
+ SBSARIO_CHANNEL_ALPHA_RSHIFT = 0x06u,
+ }
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs.meta
new file mode 100644
index 0000000..4172b25
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/ImageFormat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 72a712966a00a97428f8275064ad75fd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs
new file mode 100644
index 0000000..dd96627
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs
@@ -0,0 +1,38 @@
+namespace Adobe.Substance
+{
+ //! @brief Enum describing whether the data is an input or output
+ internal enum DataType : uint
+ {
+ SBSARIO_DATA_INVALID = 0x00u, //!< Invalid data
+ SBSARIO_DATA_INPUT = 0x01u, //!< Input data
+ SBSARIO_DATA_OUTPUT = 0x02u, //!< Output data
+ }
+
+ //! @brief Enum describing the value type of an input or output
+ internal enum ValueType : uint
+ {
+ SBSARIO_VALUE_FLOAT = 0x00u, //!< Float type
+ SBSARIO_VALUE_FLOAT2 = 0x01u, //!< Float vector with two elements
+ SBSARIO_VALUE_FLOAT3 = 0x02u, //!< Float vector with three elements
+ SBSARIO_VALUE_FLOAT4 = 0x03u, //!< Float vector with four elements
+ SBSARIO_VALUE_INT = 0x04u, //!< Integer type
+ SBSARIO_VALUE_INT2 = 0x05u, //!< Integer vector with two elements
+ SBSARIO_VALUE_INT3 = 0x06u, //!< Integer vector with three elements
+ SBSARIO_VALUE_INT4 = 0x07u, //!< Integer vector with four elements
+ SBSARIO_VALUE_IMAGE = 0x08u, //!< Image type
+ SBSARIO_VALUE_STRING = 0x09u, //!< String type, input only
+ SBSARIO_VALUE_FONT = 0x0Au, //!< Font type, input only
+ }
+
+ internal enum WidgetType : uint
+ {
+ SBSARIO_WIDGET_NOWIDGET = 0x00u,
+ SBSARIO_WIDGET_SLIDER = 0x01u,
+ SBSARIO_WIDGET_ANGLE = 0x02u,
+ SBSARIO_WIDGET_COLOR = 0x03u,
+ SBSARIO_WIDGET_TOGGLEBUTTON = 0x04u,
+ SBSARIO_WIDGET_COMBOBOX = 0x05u,
+ SBSARIO_WIDGET_IMAGE = 0x06u,
+ SBSARIO_WIDGET_POSITION = 0x07u,
+ }
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs.meta
new file mode 100644
index 0000000..fed0b0d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/Enums/nativevaluetype.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5ba3c765d94cc4a479c0a6df314289c1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs
new file mode 100644
index 0000000..f484344
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeDataImage
+ {
+ /** @brief Pointer to the underlying image data */
+ public IntPtr data;
+
+ /** @brief The width in pixels of the larget mipmap */
+ public IntPtr width;
+
+ /** @brief The height in pixels of the largest mipmap */
+ public IntPtr height;
+
+ /** @brief The number of mipmaps in the chain. The largest map (level 0)
+ will be the first in memory, with width/height as its dimensions
+ */
+ public IntPtr mipmaps;
+
+ /** @brief Channel order enum, describing the channel index order */
+ public ChannelOrder channel_order;
+
+ /** @brief Image format enum, describing the bitdepth and channel size
+ of the image in memory
+ */
+ public ImageFormat image_format;
+
+ public override string ToString()
+ {
+ return $"width:{width} \n " +
+ $"height:{height}\n" +
+ $"mipmaps:{mipmaps}\n" +
+ $"image_format:{(int)image_format} \n" +
+ $"channel_order:{(int)channel_order}";
+ }
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeData
+ {
+ /** @brief Type descriptor of the data value */
+ public ValueType ValueType;
+
+ /** @brief Descriptor of whether the data is for inputs or outputs */
+ public DataType DataType;
+
+ /** @brief Data index that this is associated with, either of the input
+ if it is input data, or of the output if it is output/result
+ data. */
+ public IntPtr Index;
+
+ /** @brief Internal data, of which the valid type is determined by
+ the value_type member.*/
+ public DataInternalNumeric Data;
+ }
+} // namespace Adobe.Substance
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs.meta
new file mode 100644
index 0000000..fdd7a71
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeDataImage.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: df487c43ab54e7e4eaaf4c48d091656b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs
new file mode 100644
index 0000000..6a43eb0
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeInputVisibility
+ {
+ public IntPtr Index;
+
+ public IntPtr IsVisible;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs.meta
new file mode 100644
index 0000000..a6e544d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeInputVisibility.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 074a7ebe4a960264d9ade0ce2e8404b6
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs
new file mode 100644
index 0000000..6924e4a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs
@@ -0,0 +1,86 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ internal static class NativeConsts
+ {
+ public const uint UseDefault = ~0u;
+ }
+
+ [StructLayout(LayoutKind.Explicit, Size = 16)]
+ internal struct NativeOutputFormatComponent
+ {
+ [FieldOffset(0)]
+ public uint outputIndex;
+
+ [FieldOffset(4)]
+ public ShuffleIndex ShuffleIndex;
+
+ [FieldOffset(8)]
+ public float levelMin;
+
+ [FieldOffset(12)]
+ public float levelMax;
+
+ public static NativeOutputFormatComponent CreateDefault()
+ {
+ return new NativeOutputFormatComponent
+ {
+ outputIndex = NativeConsts.UseDefault,
+ levelMin = NativeConsts.UseDefault,
+ levelMax = NativeConsts.UseDefault
+ };
+ }
+ }
+
+ [StructLayout(LayoutKind.Explicit, Size = 84)]
+ internal struct NativeOutputFormat
+ {
+ [FieldOffset(0)]
+ public uint format;
+
+ [FieldOffset(4)]
+ public uint mipmapLevelsCount;
+
+ [FieldOffset(8)]
+ public HVFlip hvFlip;
+
+ [FieldOffset(12)]
+ public uint forceWidth;
+
+ [FieldOffset(16)]
+ public uint forceHeight;
+
+ [FieldOffset(20)]
+ public NativeOutputFormatComponent ChannelComponent0;
+
+ [FieldOffset(36)]
+ public NativeOutputFormatComponent ChannelComponent1;
+
+ [FieldOffset(52)]
+ public NativeOutputFormatComponent ChannelComponent2;
+
+ [FieldOffset(68)]
+ public NativeOutputFormatComponent ChannelComponent3;
+
+ public static NativeOutputFormat CreateDefault()
+ {
+ return new NativeOutputFormat
+ {
+ format = NativeConsts.UseDefault,
+ mipmapLevelsCount = NativeConsts.UseDefault,
+ hvFlip = HVFlip.SBSARIO_HVFLIP_NO,
+ forceWidth = NativeConsts.UseDefault,
+ forceHeight = NativeConsts.UseDefault,
+
+ ChannelComponent0 = NativeOutputFormatComponent.CreateDefault(),
+ ChannelComponent1 = NativeOutputFormatComponent.CreateDefault(),
+ ChannelComponent2 = NativeOutputFormatComponent.CreateDefault(),
+ ChannelComponent3 = NativeOutputFormatComponent.CreateDefault()
+ };
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs.meta
new file mode 100644
index 0000000..d29d797
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeOutputFormat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 80e96a42636b99049accabcee0d069dc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs
new file mode 100644
index 0000000..67ea5e9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativePhysicalSize
+ {
+ public float X;
+ public float Y;
+ public float Z;
+ }
+} // namespace Adobe.Substance
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs.meta
new file mode 100644
index 0000000..7bc82da
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePhysicalSize.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4897bada61d9a4ba3b55b9f20fe445cd
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs
new file mode 100644
index 0000000..7de34f0
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Struct for handlign sending and receiving preset XML from native to managed code.
+ ///
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativePreset
+ {
+ public IntPtr XMLString;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs.meta
new file mode 100644
index 0000000..11cee6b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativePreset.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 16bd92bd193ee9044b52b3607ef613c1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs
new file mode 100644
index 0000000..a7651a4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeThumbnail
+ {
+ public IntPtr Size;
+ public IntPtr Data;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs.meta
new file mode 100644
index 0000000..41ba681
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/NativeThumbnail.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 219b8713c6f86934ba2bb9d9d3cb18f3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs
new file mode 100644
index 0000000..aafa18d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs
@@ -0,0 +1,88 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ //! @brief Numeric type union
+ //! @note The size will need to be changed if the API
+ [StructLayout(LayoutKind.Explicit, Size = 16)]
+ internal struct NumericDescriptValue
+ {
+ [FieldOffset(0)]
+ public int mIntData0;
+
+ [FieldOffset(4)]
+ public int mIntData1;
+
+ [FieldOffset(8)]
+ public int mIntData2;
+
+ [FieldOffset(12)]
+ public int mIntData3;
+
+ [FieldOffset(0)]
+ public float mFloatData0;
+
+ [FieldOffset(4)]
+ public float mFloatData1;
+
+ [FieldOffset(8)]
+ public float mFloatData2;
+
+ [FieldOffset(12)]
+ public float mFloatData3;
+ }
+
+ //! @brief Managed representation of the native sbsario input desc type
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeNumericInputDesc
+ {
+ public IntPtr index;
+
+ /** @brief Unique string identifier for x axis of a vector input. ('X' if nullptr) */
+ public IntPtr xLabel;
+
+ /** @brief Unique string identifier for y axis of a vector input. ('Y' if nullptr) */
+ public IntPtr yLabel;
+
+ /** @brief Unique string identifier for z axis of a vector input. ('Z' if nullptr) */
+ public IntPtr zLabel;
+
+ /** @brief Unique string identifier for w axis of a vector input. ('W' if nullptr) */
+ public IntPtr wLabel;
+
+ /** @brief Unique string identifier for the false state of a bool int. */
+ public IntPtr LabelFalse;
+
+ /** @brief Unique string identifier for the true state of a bool int. */
+ public IntPtr LabelTrue;
+
+ /** @brief Step to be used for a slider input. */
+ public float sliderStep;
+
+ /** @brief Bool value that determs if the slider must clamp. */
+ public IntPtr sliderClamp;
+
+ /** @brief Internal data, of which the valid type is determined by
+ the value_type member.
+ */
+ public NumericDescriptValue default_value;
+
+ public NumericDescriptValue min_value;
+
+ public NumericDescriptValue max_value;
+
+ public IntPtr enumValueCount;
+ }
+
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeEnumInputDesc
+ {
+ public IntPtr label;
+
+ public NumericDescriptValue value;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs.meta
new file mode 100644
index 0000000..1743db5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeNumericInputDesc.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ab2bb5d412dd1684ab655586f81aa0e4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs
new file mode 100644
index 0000000..6769cac
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ //! @brief Managed representation of the native sbsario graph descriptor structure
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeGraphDesc
+ {
+ //! @brief Unique string label of the graph
+ public IntPtr mLabel;
+
+ //! @brief Description set for the graph
+ public IntPtr mDescription;
+
+ //! @brief Category of the graph
+ public IntPtr mCategory;
+
+ //! @brief Semicolon separated list of keywords
+ public IntPtr mKeywords;
+
+ //! @brief Graph author
+ public IntPtr mAuthor;
+
+ //! @brief Graph author website url
+ public IntPtr mAuthorUrl;
+
+ //! @brief Graph user data
+ public IntPtr mUserTag;
+ }
+} // namespace Adobe.Substance
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs.meta
new file mode 100644
index 0000000..63d9680
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativegraph.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 34e809fb674bca84f86309e85e7595fc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs
new file mode 100644
index 0000000..955b7e4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ //! @brief Managed representation of the native sbsario input desc type
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeInputDesc
+ {
+ //! @brief Unique string identifier of the input
+ public IntPtr mIdentifier;
+
+ //! @brief Display label of the input
+ public IntPtr mLabel;
+
+ //! @brief Gui group of the input.
+ public IntPtr GuiGroup;
+
+ //! @brief Description of the input.
+ public IntPtr GuiDescription;
+
+ //! @brief GUI visibility condition.
+ public IntPtr GuiVisibleIf;
+
+ //! @brief Index of the input
+ public IntPtr mIndex;
+
+ //! @brief Type of widget used for the input
+ public IntPtr inputWidgetType;
+
+ //! @brief Type of the input
+ public IntPtr mValueType;
+ }
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs.meta
new file mode 100644
index 0000000..aab6f2d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeinputdesc.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 66f8f0c2765100b4ea04428bb0b07a05
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs
new file mode 100644
index 0000000..db1f368
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance
+{
+ //! @brief Managed representation of the native sbsario output desc type
+ [StructLayout(LayoutKind.Sequential)]
+ internal struct NativeOutputDesc
+ {
+ //! @brief Unique string identifier of the output
+ public IntPtr mIdentifier;
+
+ //! @brief Display label for the output
+ public IntPtr mLabel;
+
+ //! @brief Index of the output
+ public UIntPtr mIndex;
+
+ //! @brief Image output format.
+ public IntPtr mFormat;
+
+ //! @brief Type of the output
+ public ValueType mValueType;
+
+ //! @brief Default usage for the output
+ public IntPtr mChannelUsage;
+ }
+} // namespace Alg.Sbsario
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs.meta
new file mode 100644
index 0000000..205b775
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/MarshalStructs/nativeoutputdesc.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b408381e48fca754193e7e75bc35e594
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs
new file mode 100644
index 0000000..391c9b4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs
@@ -0,0 +1,1035 @@
+//! @file nativemethods.cs
+//! @brief Interface to the sbsario dynamic library for working with Substance
+//! @author Galen Helfter - Adobe
+//! @date 20210608
+//! @copyright Adobe. All rights reserved.
+
+//Do not dynamically load on Android.
+#if (!UNITY_EDITOR && UNITY_ANDROID)
+#define ALG_SBSARIO_STATIC_LOAD
+//Do not dynamically load on IOS.
+#elif (!UNITY_EDITOR && UNITY_IOS)
+#define ALG_SBSARIO_STATIC_LOAD
+#else
+//Dynamically load on Mac and Linux and Windows.
+#define ALG_SBSARIO_DYNAMIC_LOAD
+#endif
+
+using System;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ internal static class NativeMethods
+ {
+#if (UNITY_IOS && !UNITY_EDITOR)
+ public const string NativeAssembly = "__Internal";
+ public const CharSet NativeCharSet = CharSet.Ansi;
+ public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
+#elif(UNITY_EDITOR_LINUX)
+ public const string NativeAssembly = "sbsario";
+ public const CharSet NativeCharSet = CharSet.Ansi;
+ public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
+#else
+ public const string NativeAssembly = "sbsario";
+ public const CharSet NativeCharSet = CharSet.Ansi;
+ public const CallingConvention NativeCallingConvention = CallingConvention.StdCall;
+#endif
+
+ public static string substancePath = null;
+
+ private static object _locker = new object();
+
+ internal static IntPtr sbsario_get_version()
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_get_version();
+ }
+ }
+
+ //! @brief Acquire the git hash of the sbsario library
+ //! @note This may be called without initializing the library
+ //! @return Constant string containing the sbsario git hash
+ internal static IntPtr sbsario_get_hash()
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_get_hash();
+ }
+ }
+
+ //! @brief Initialize the sbsario library
+ //! @param engine_path File path to the Substance engine on disk, as a null-terminated
+ //! UTF-8 C string
+ //! @return Error type enum representic success or an error
+ internal static uint sbsario_initialize(string pluginPath, string engine_path, IntPtr memoryBudget)
+ {
+ lock (_locker)
+ {
+ try
+ {
+#if ALG_SBSARIO_DYNAMIC_LOAD
+ return NativeMethodsImpl.sbsario_initialize(engine_path, pluginPath, memoryBudget);
+#else
+ return NativeMethodsImpl.sbsario_initialize(engine_path, memoryBudget);
+#endif
+ }
+ catch (DllNotFoundException e)
+ {
+ UnityEngine.Debug.Log($"{e.Message}");
+ throw e;
+ }
+ }
+ }
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ internal static uint sbsario_shutdown()
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_shutdown();
+ }
+ }
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ public static IntPtr sbsario_sbsar_open(string sbsar_path)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_open(sbsar_path);
+ }
+ }
+
+ public static IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_load_from_memory(data, size);
+ }
+ }
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ internal static uint sbsario_sbsar_close(IntPtr sbsar_handle)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_close(sbsar_handle);
+ }
+ }
+
+ internal static IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_graph_count(sbsar_handle);
+ }
+ }
+
+ internal static IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_output_count(sbsar_handle, graph);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_output_desc(sbsar_handle, graph, output, out desc);
+ }
+ }
+
+ internal static IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_input_count(sbsar_handle, graph);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_input_desc(sbsar_handle, graph, output, out desc);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr inputIndex, out NativeNumericInputDesc desc)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_numeric_input_desc(sbsar_handle, graph, inputIndex, out desc);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_enum_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr inputIndex, IntPtr valuesArray, IntPtr size)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_enum_input_values(sbsar_handle, graph, inputIndex, valuesArray, size);
+ }
+ }
+
+ internal static uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_set_input(sbsar_handle, graph, ref data);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_input(sbsar_handle, graph, input, out data);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_input_visibility(sbsar_handle, graph, input, out visibilityInfo);
+ }
+ }
+
+ internal static uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_render(sbsar_handle, graph, out result);
+ }
+ }
+
+ internal static uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_clear_results(sbsar_handle, graph);
+ }
+ }
+
+ internal static uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_utils_copy_texture(ref src, ref dst, flags);
+ }
+ }
+
+ internal static uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_make_preset_from_current_state(sbsar_handle, graph, ref preset);
+ }
+ }
+
+ internal static uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_apply_preset(sbsar_handle, graph, ref preset);
+ }
+ }
+
+ internal static uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_assign_as_alpha_channel(sbsar_handle, graph, targetOutput, alphaOutput, minValue, maxValue);
+ }
+ }
+
+ internal static uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_create_virtual_output(sbsar_handle, graph, ref desc, ref format);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_output_uid(sbsar_handle, graph, targetOutput, out uid);
+ }
+ }
+
+ internal static uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_create_output_copy(sbsar_handle, graph, targetOutput, out desc);
+ }
+ }
+
+ internal static uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_set_output_format_override(sbsar_handle, graph, targetOutput, ref format);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_output_format_override(sbsar_handle, graph, targetOutput, out isFormatOverridden, out format);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_graph_thumbnail(sbsar_handle, graph, out thumbnail);
+ }
+ }
+
+ internal static uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize)
+ {
+ lock (_locker)
+ {
+ return NativeMethodsImpl.sbsario_sbsar_get_physical_size(sbsar_handle, graph, out physicaSize);
+ }
+ }
+
+ #region Impl
+
+ //! @brief Native interface to the sbsario library, for communicating between the
+ //! unmanaged code and the managed code
+ private static class NativeMethodsImpl
+ {
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ public static void LoadSBSARIO()
+ {
+ }
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_get_version_delegate();
+
+ public static IntPtr sbsario_get_version()
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_get_version_delegate)) as sbsario_get_version_delegate;
+ return function.Invoke();
+ }
+
+#else
+
+ //! @brief Acquire the version of the sbsario library
+ //! @note This may be called without initializing the library
+ //! @return Constant string containing the sbsario semantic version
+ [DllImport(NativeAssembly)]
+ internal static extern IntPtr sbsario_get_version();
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_get_hash_delegate();
+
+ public static IntPtr sbsario_get_hash()
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_get_hash_delegate)) as sbsario_get_hash_delegate;
+ return function.Invoke();
+ }
+
+#else
+
+ //! @brief Acquire the git hash of the sbsario library
+ //! @note This may be called without initializing the library
+ //! @return Constant string containing the sbsario git hash
+ [DllImport(NativeAssembly)]
+ internal static extern IntPtr sbsario_get_hash();
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ [UnmanagedFunctionPointerAttribute(CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
+ private delegate uint sbsario_initialize_delegate(IntPtr engine_path, IntPtr memoryBudget);
+
+ public static uint sbsario_initialize(string engine_path, string pluginPath, IntPtr memoryBudget)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ DLLHelpers.LoadDLL(pluginPath);
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_initialize_delegate)) as sbsario_initialize_delegate;
+ var globalStr = Marshal.StringToHGlobalAnsi(engine_path);
+ return function.Invoke(globalStr, memoryBudget);
+ }
+
+#else
+
+ //! @brief Initialize the sbsario library
+ //! @param engine_path File path to the Substance engine on disk, as a null-terminated
+ //! UTF-8 C string
+ //! @return Error type enum representic success or an error
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_initialize([MarshalAs(UnmanagedType.LPStr)] string engine_path, IntPtr memoryBudget);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_shutdown_delegate();
+
+ public static uint sbsario_shutdown()
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_shutdown_delegate)) as sbsario_shutdown_delegate;
+ var result = function.Invoke();
+
+ DLLHelpers.UnloadDLL();
+ return result;
+ }
+
+#else
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_shutdown();
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_sbsar_open_delegate([MarshalAs(UnmanagedType.LPStr)] string sbsar_path);
+
+ public static IntPtr sbsario_sbsar_open(string sbsar_handle)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_open_delegate)) as sbsario_sbsar_open_delegate;
+ return function.Invoke(sbsar_handle);
+ }
+
+#else
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ [DllImport(NativeAssembly)]
+ public static extern IntPtr sbsario_sbsar_open([MarshalAs(UnmanagedType.LPStr)] string sbsar_path);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_sbsar_load_from_memory_delegate(IntPtr data, IntPtr size);
+
+ public static IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_load_from_memory_delegate)) as sbsario_sbsar_load_from_memory_delegate;
+ return function.Invoke(data, size);
+ }
+
+#else
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ [DllImport(NativeAssembly)]
+ public static extern IntPtr sbsario_sbsar_load_from_memory(IntPtr data, IntPtr size);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_close_delegate(IntPtr sbsar_handle);
+
+ public static uint sbsario_sbsar_close(IntPtr sbsar_handle)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_close_delegate)) as sbsario_sbsar_close_delegate;
+ return function.Invoke(sbsar_handle);
+ }
+
+#else
+
+ //! @brief Shut down the sbsario library
+ //! @return Error type enum representing success or error
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_close(IntPtr sbsar_handle);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_sbsar_get_graph_count_delegate(IntPtr sbsar_handle);
+
+ public static IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_graph_count_delegate)) as sbsario_sbsar_get_graph_count_delegate;
+ return function.Invoke(sbsar_handle);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern IntPtr sbsario_sbsar_get_graph_count(IntPtr sbsar_handle);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_sbsar_get_output_count_delegate(IntPtr sbsar_handle, IntPtr graph);
+
+ public static IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_count_delegate)) as sbsario_sbsar_get_output_count_delegate;
+ return function.Invoke(sbsar_handle, graph);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern IntPtr sbsario_sbsar_get_output_count(IntPtr sbsar_handle, IntPtr graph);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_output_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc);
+
+ public static uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_desc_delegate)) as sbsario_sbsar_get_output_desc_delegate;
+ return function.Invoke(sbsar_handle, graph, output, out desc);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_output_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeOutputDesc desc);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate IntPtr sbsario_sbsar_get_input_count_delegate(IntPtr sbsar_handle, IntPtr graph);
+
+ public static IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_count_delegate)) as sbsario_sbsar_get_input_count_delegate;
+ return function.Invoke(sbsar_handle, graph);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern IntPtr sbsario_sbsar_get_input_count(IntPtr sbsar_handle, IntPtr graph);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_input_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc);
+
+ public static uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_desc_delegate)) as sbsario_sbsar_get_input_desc_delegate;
+ return function.Invoke(sbsar_handle, graph, output, out desc);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr output, out NativeInputDesc desc);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_numeric_input_desc_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc);
+
+ public static uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_numeric_input_desc_delegate)) as sbsario_sbsar_get_numeric_input_desc_delegate;
+ return function.Invoke(sbsar_handle, graph, input, out desc);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_numeric_input_desc(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeNumericInputDesc desc);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_enum_input_values_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize);
+
+ public static uint sbsario_sbsar_get_enum_input_values(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_enum_input_values_delegate)) as sbsario_sbsar_get_enum_input_values_delegate;
+ return function.Invoke(sbsar_handle, graph, input, valuesArray, arraySize);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_enum_input_values(IntPtr sbsar_handle, IntPtr graph, IntPtr input, IntPtr valuesArray, IntPtr arraySize);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_set_input_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativeData data);
+
+ public static uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_set_input_delegate)) as sbsario_sbsar_set_input_delegate;
+ return function.Invoke(sbsar_handle, graph, ref data);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_set_input(IntPtr sbsar_handle, IntPtr graph, ref NativeData data);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_input_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data);
+
+ public static uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_delegate)) as sbsario_sbsar_get_input_delegate;
+ return function.Invoke(sbsar_handle, graph, input, out data);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_input(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeData data);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_render_delegate(IntPtr sbsar_handle, IntPtr graph, out IntPtr result);
+
+ public static uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_render_delegate)) as sbsario_sbsar_render_delegate;
+ return function.Invoke(sbsar_handle, graph, out result);
+ }
+
+#else
+
+ //! @brief
+ //! @return
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_render(IntPtr sbsar_handle, IntPtr graph, out IntPtr result);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_clear_results_delegate(IntPtr sbsar_handle, IntPtr graph);
+
+ public static uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_clear_results_delegate)) as sbsario_sbsar_clear_results_delegate;
+ return function.Invoke(sbsar_handle, graph);
+ }
+
+#else
+ /** @brief Implementation to lear any stored memory for renders with the graph
+ @param sbsar_object Pointer to a valid sbsar object to clear results on
+ @param graph Index of the graph to clear the results of
+ @return sbsario_error_t enum representing success or the error **/
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_clear_results(IntPtr sbsar_handle, IntPtr graph);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_utils_copy_texture_delegate(ref NativeDataImage src, ref NativeDataImage dst, uint flags);
+
+ public static uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_utils_copy_texture_delegate)) as sbsario_sbsar_utils_copy_texture_delegate;
+ return function.Invoke(ref src, ref dst, flags);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_utils_copy_texture(ref NativeDataImage src, ref NativeDataImage dst, uint flags);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_make_preset_from_current_state_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
+
+ public static uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_make_preset_from_current_state_delegate)) as sbsario_sbsar_make_preset_from_current_state_delegate;
+ return function.Invoke(sbsar_handle, graph, ref preset);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_make_preset_from_current_state(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint ssbsario_sbsar_apply_preset_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
+
+ public static uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(ssbsario_sbsar_apply_preset_delegate)) as ssbsario_sbsar_apply_preset_delegate;
+ return function.Invoke(sbsar_handle, graph, ref preset);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_apply_preset(IntPtr sbsar_handle, IntPtr graph, ref NativePreset preset);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_input_visibility_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo);
+
+ public static uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_input_visibility_delegate)) as sbsario_sbsar_get_input_visibility_delegate;
+ return function.Invoke(sbsar_handle, graph, input, out visibilityInfo);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_input_visibility(IntPtr sbsar_handle, IntPtr graph, IntPtr input, out NativeInputVisibility visibilityInfo);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_assign_as_alpha_channel_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue);
+
+ public static uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_assign_as_alpha_channel_delegate)) as sbsario_sbsar_assign_as_alpha_channel_delegate;
+ return function.Invoke(sbsar_handle, graph, targetOutput, alphaOutput, minValue, maxValue);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_assign_as_alpha_channel(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, IntPtr alphaOutput, float minValue, float maxValue);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_create_virtual_output_delegate(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format);
+
+ public static uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_create_virtual_output_delegate)) as sbsario_sbsar_create_virtual_output_delegate;
+ return function.Invoke(sbsar_handle, graph, ref desc, ref format);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_create_virtual_output(IntPtr sbsar_handle, IntPtr graph, ref NativeOutputDesc desc, ref NativeOutputFormat format);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_output_uid_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid);
+
+ public static uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_uid_delegate)) as sbsario_sbsar_get_output_uid_delegate;
+ return function.Invoke(sbsar_handle, graph, targetOutput, out uid);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_output_uid(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr uid);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_create_output_copy_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc);
+
+ public static uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_create_output_copy_delegate)) as sbsario_sbsar_create_output_copy_delegate;
+ return function.Invoke(sbsar_handle, graph, targetOutput, out desc);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_create_output_copy(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out NativeOutputDesc desc);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_set_output_format_override_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format);
+
+ public static uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_set_output_format_override_delegate)) as sbsario_sbsar_set_output_format_override_delegate;
+ return function.Invoke(sbsar_handle, graph, targetOutput, ref format);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_set_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, ref NativeOutputFormat format);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_output_format_override_delegate(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format);
+
+ public static uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_output_format_override_delegate)) as sbsario_sbsar_get_output_format_override_delegate;
+ return function.Invoke(sbsar_handle, graph, targetOutput, out isFormatOverridden, out format);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_output_format_override(IntPtr sbsar_handle, IntPtr graph, IntPtr targetOutput, out IntPtr isFormatOverridden, out NativeOutputFormat format);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_graph_thumbnail_delegate(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail);
+
+ public static uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_graph_thumbnail_delegate)) as sbsario_sbsar_get_graph_thumbnail_delegate;
+ return function.Invoke(sbsar_handle, graph, out thumbnail);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_graph_thumbnail(IntPtr sbsar_handle, IntPtr graph, out NativeThumbnail thumbnail);
+
+#endif
+
+#if ALG_SBSARIO_DYNAMIC_LOAD
+
+ private delegate uint sbsario_sbsar_get_physical_size_delegate(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize);
+
+ public static uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize)
+ {
+ string myName = System.Reflection.MethodBase.GetCurrentMethod().Name;
+
+ if (DLLHelpers.DllHandle == IntPtr.Zero)
+ throw new SubstanceEngineNotFoundException(substancePath);
+
+ var function = DLLHelpers.GetFunction(myName, typeof(sbsario_sbsar_get_physical_size_delegate)) as sbsario_sbsar_get_physical_size_delegate;
+ return function.Invoke(sbsar_handle, graph, out physicaSize);
+ }
+
+#else
+
+ [DllImport(NativeAssembly)]
+ internal static extern uint sbsario_sbsar_get_physical_size(IntPtr sbsar_handle, IntPtr graph, out NativePhysicalSize physicaSize);
+
+#endif
+
+ #endregion Impl
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs.meta
new file mode 100644
index 0000000..c903de2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/NativeMethods.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c2acf0fc87821724f9a375683712fe70
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile.meta
new file mode 100644
index 0000000..7ec0ccf
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 197303fc3cc196f4a804d1294dd46eaa
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs
new file mode 100644
index 0000000..a67a658
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs
@@ -0,0 +1,31 @@
+#define SUBSTANCE_PROFILE_ENABLE
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+#if SUBSTANCE_PROFILE_ENABLE
+
+using UnityEngine.Profiling;
+
+#endif
+
+namespace Adobe.Substance
+{
+ internal static class ProfileUtils
+ {
+ internal static void BeginSample(string name)
+ {
+#if SUBSTANCE_PROFILE_ENABLE
+ Profiler.BeginSample(name);
+#endif
+ }
+
+ internal static void EndSample()
+ {
+#if SUBSTANCE_PROFILE_ENABLE
+ Profiler.EndSample();
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs.meta
new file mode 100644
index 0000000..a81cd07
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Profile/ProfileUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 504aaf43fe623354fa2b2c39cefa44ac
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines.meta
new file mode 100644
index 0000000..43a5fe6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e147d824023c2174fae33c079eb80d02
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs
new file mode 100644
index 0000000..14855e3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs
@@ -0,0 +1,127 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public class PluginPipelines
+ {
+ private static Pipeline current = Pipeline.UNKNOWN;
+ private static string currentText = "UNKNOWN";
+
+ public static Pipeline GetCurrent()
+ {
+ return current;
+ }
+
+ public static string GetCurrentText()
+ {
+ return currentText;
+ }
+
+ public static void SetCurrent(Pipeline pSetting)
+ {
+ switch (pSetting)
+ {
+ case Pipeline.HDRP:
+ current = Pipeline.HDRP;
+ currentText = "HDRP";
+ break;
+
+ case Pipeline.URP:
+ current = Pipeline.URP;
+ currentText = "URP";
+ break;
+
+ default:
+ current = Pipeline.DEFAULT;
+ currentText = "DEFAULT";
+ break;
+ }
+ }
+
+ public static bool IsUNKNOWN()
+ {
+ return (current == Pipeline.UNKNOWN);
+ }
+
+ public static bool IsDEFAULT()
+ {
+ return (current == Pipeline.DEFAULT);
+ }
+
+ public static bool IsHDRP()
+ {
+ return (current == Pipeline.HDRP);
+ }
+
+ public static bool IsURP()
+ {
+ return (current == Pipeline.URP);
+ }
+
+ public static void GetCurrentPipelineInUse()
+ {
+ if (IsUNKNOWN())
+ {
+ if (UnityPipeline.IsHDRP())
+ SetCurrent(Pipeline.HDRP);
+ else if (UnityPipeline.IsURP())
+ SetCurrent(Pipeline.URP);
+ else
+ SetCurrent(Pipeline.DEFAULT);
+ }
+ }
+
+ private static class UnityPipeline
+ {
+ public static bool IsHDRP()
+ {
+#if UNITY_2019_3_OR_NEWER
+ bool bActive = false;
+
+ UnityEngine.Rendering.RenderPipelineAsset asset;
+ asset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset;
+
+ if ((asset != null) &&
+ (asset.GetType().ToString().EndsWith(".HDRenderPipelineAsset")))
+ {
+ bActive = true;
+ }
+
+ return bActive;
+#else
+ return false;
+#endif
+ }
+
+ public static bool IsURP()
+ {
+#if UNITY_2019_3_OR_NEWER
+ bool bActive = false;
+
+ UnityEngine.Rendering.RenderPipelineAsset asset;
+ asset = UnityEngine.Rendering.GraphicsSettings.renderPipelineAsset;
+
+ if ((asset != null) &&
+ (asset.GetType().ToString().EndsWith("UniversalRenderPipelineAsset")))
+ {
+ bActive = true;
+ }
+
+ return bActive;
+#else
+ return false;
+#endif
+ }
+ }
+
+ public enum Pipeline
+ {
+ UNKNOWN = -1,
+ DEFAULT = 0,
+ HDRP = 1,
+ URP = 2
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs.meta
new file mode 100644
index 0000000..6068080
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Render Pipelines/PluginPipelines.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ba4c5727559f0ba4d99dbf399320b335
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs
new file mode 100644
index 0000000..9b3ed56
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs
@@ -0,0 +1,914 @@
+//! @file substancearchive.cs
+//! @brief Substance archive interface
+//! @author Galen Helfter - Adobe
+//! @date 20210609
+//! @copyright Adobe. All rights reserved.
+
+using System;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+using Adobe.Substance.Input;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Object that represents a native C++ substance graph.
+ ///
+ public sealed class SubstanceNativeGraph : IDisposable
+ {
+ private IntPtr _handler;
+ private bool _disposedValue;
+ private bool _inRenderWork;
+
+ public bool IsInitialized { get; set; }
+
+ public bool InRenderWork
+ {
+ get
+ {
+ lock (this)
+ {
+ return _inRenderWork;
+ }
+ }
+ set
+ {
+ lock (this)
+ {
+ _inRenderWork = value;
+ }
+ }
+ }
+
+ private readonly int _fileGraphID;
+
+ ///
+ /// Create a object that acts as a brige between Unity and Substance C++ SDK.
+ ///
+ /// Content of the sbsar file.
+ /// Target graph ID inside the file.
+ internal SubstanceNativeGraph(byte[] fileContent, int targetGraphID)
+ {
+ _fileGraphID = targetGraphID;
+ int size = Marshal.SizeOf(fileContent[0]) * fileContent.Length;
+ var nativeMemory = Marshal.AllocHGlobal(size);
+ Marshal.Copy(fileContent, 0, nativeMemory, size);
+
+ try
+ {
+ _handler = NativeMethods.sbsario_sbsar_load_from_memory(nativeMemory, (IntPtr)size);
+
+ if (_handler == default)
+ throw new ArgumentException();
+ }
+ finally
+ {
+ if (nativeMemory != default)
+ Marshal.FreeHGlobal(nativeMemory);
+ }
+ }
+
+ ///
+ /// Renders graph.
+ ///
+ /// Native render result.
+ public IntPtr Render()
+ {
+ ErrorCode errorCode = (ErrorCode)NativeMethods.sbsario_sbsar_render(_handler, (IntPtr)_fileGraphID, out IntPtr result);
+
+ if (errorCode != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(errorCode);
+
+ return result;
+ }
+
+ ///
+ /// Get raw thumbnail data from graph.
+ ///
+ /// Raw graph thumbnail RGBA data.
+ public byte[] GetThumbnail()
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_graph_thumbnail(_handler, (IntPtr)_fileGraphID, out NativeThumbnail thumbnail);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ if (thumbnail.Size == IntPtr.Zero)
+ return null;
+
+ var thumbnailData = new byte[(int)thumbnail.Size];
+ Marshal.Copy(thumbnail.Data, thumbnailData, 0, thumbnailData.Length);
+ return thumbnailData;
+ }
+
+ #region Presets
+
+ public string CreatePresetFromCurrentState()
+ {
+ //Alocate 1Mb for the preset file text.
+ NativePreset preset = new NativePreset
+ {
+ XMLString = Marshal.AllocHGlobal(1024 * 1024)
+ };
+
+ try
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_make_preset_from_current_state(_handler, (IntPtr)_fileGraphID, ref preset);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ var stringResult = Marshal.PtrToStringAnsi(preset.XMLString);
+ return stringResult;
+ }
+ finally
+ {
+ //Free native allocated memory.
+ Marshal.FreeHGlobal(preset.XMLString);
+ }
+ }
+
+ ///
+ /// Apply preset string to graph.
+ ///
+ ///
+ public void ApplyPreset(string presetXML)
+ {
+ NativePreset preset = new NativePreset();
+ preset.XMLString = Marshal.StringToHGlobalAnsi(presetXML);
+
+ try
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_apply_preset(_handler, (IntPtr)_fileGraphID, ref preset);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+ }
+ finally
+ {
+ // Always free the unmanaged string.
+ Marshal.FreeHGlobal(preset.XMLString);
+ }
+ }
+
+ #endregion Presets
+
+ #region Output
+
+ ///
+ /// Get the total output count for a given graph in the substance object.
+ ///
+ /// Total graph output count.
+ public int GetOutputCount()
+ {
+ return (int)NativeMethods.sbsario_sbsar_get_output_count(_handler, (IntPtr)_fileGraphID);
+ }
+
+ public SubstanceOutputDescription GetOutputDescription(int outputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_output_desc(_handler, (IntPtr)_fileGraphID, (IntPtr)outputID, out NativeOutputDesc inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ var identifier = Marshal.PtrToStringAnsi(inputDesc.mIdentifier);
+ var label = Marshal.PtrToStringAnsi(inputDesc.mIdentifier);
+ var channel = Marshal.PtrToStringAnsi(inputDesc.mChannelUsage);
+
+ if (string.IsNullOrEmpty(channel))
+ {
+ Debug.LogWarning($"Output {outputID} does not have a channel type. This output will not be rendered. ");
+ channel = "unkown";
+ }
+
+ if (string.IsNullOrEmpty(identifier))
+ {
+ Debug.LogWarning($"Output {outputID} does not have a identifier.");
+ identifier = "unkown";
+ }
+
+ if (string.IsNullOrEmpty(label))
+ {
+ Debug.LogWarning($"Output {outputID} does not have a label.");
+ label = "unkown";
+ }
+
+ return new SubstanceOutputDescription()
+ {
+ Identifier = identifier,
+ Label = label,
+ Index = (int)inputDesc.mIndex,
+ Type = inputDesc.mValueType.ToUnity(),
+ Channel = channel
+ };
+ }
+
+ public SubstanceOutputDescription CreateVirtualOutput(SubstanceVirtualOutputCreateInfo info)
+ {
+ var description = info.CreateOutputDesc();
+ var format = info.CreateOutputFormat();
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_create_virtual_output(_handler, (IntPtr)_fileGraphID, ref description, ref format);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ var identifier = Marshal.PtrToStringAnsi(description.mIdentifier);
+ var label = Marshal.PtrToStringAnsi(description.mIdentifier);
+ var channel = Marshal.PtrToStringAnsi(description.mChannelUsage);
+
+ return new SubstanceOutputDescription()
+ {
+ Identifier = identifier,
+ Label = label,
+ Index = (int)description.mIndex,
+ Type = description.mValueType.ToUnity(),
+ Channel = channel,
+ };
+ }
+
+ public int CreateOutputCopy(int outputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_create_output_copy(_handler, (IntPtr)_fileGraphID, (IntPtr)outputID, out NativeOutputDesc inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ return (int)inputDesc.mIndex;
+ }
+
+ public uint GetOutputUID(int outputIndex)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_output_uid(_handler, (IntPtr)_fileGraphID, (IntPtr)outputIndex, out IntPtr outputUID);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ return (uint)outputUID;
+ }
+
+ public void AssignOutputToAlphaChannel(int targetOutputID, int alphaChannelID, bool invert = false)
+ {
+ float minValue = invert ? 1f : 0f;
+ float maxValue = invert ? 0f : 1f;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_assign_as_alpha_channel(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, (IntPtr)alphaChannelID, minValue, maxValue);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+ }
+
+ public void ResetAlphaChannelAssignment(int targetOutputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_output_desc(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, out NativeOutputDesc outputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ result = (ErrorCode)NativeMethods.sbsario_sbsar_get_output_format_override(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, out IntPtr isFormatOverridenPtr, out NativeOutputFormat oldFormat);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ bool isFormatOverriden = (int)isFormatOverridenPtr != 0;
+
+ if (!isFormatOverriden)
+ return;
+
+ if (oldFormat.format == NativeConsts.UseDefault)
+ return;
+
+ NativeOutputFormat newFormat = oldFormat;
+ newFormat.format = NativeConsts.UseDefault;
+
+ result = (ErrorCode)NativeMethods.sbsario_sbsar_set_output_format_override(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, ref newFormat);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+ }
+
+ public void ChangeOutputRBChannels(int targetOutputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_output_format_override(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, out IntPtr isFormatOverridenPtr, out NativeOutputFormat oldFormat);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ bool isFormatOverriden = (int)isFormatOverridenPtr != 0;
+
+ NativeOutputFormat newFormat = NativeOutputFormat.CreateDefault();
+
+ if (isFormatOverriden)
+ newFormat = oldFormat;
+
+ var redChannel = newFormat.ChannelComponent0;
+ var blueChannel = newFormat.ChannelComponent2;
+
+ if (blueChannel.outputIndex == NativeConsts.UseDefault || redChannel.outputIndex == NativeConsts.UseDefault)
+ return;
+
+ if (newFormat.ChannelComponent0.ShuffleIndex == ShuffleIndex.Blue &&
+ newFormat.ChannelComponent2.ShuffleIndex == ShuffleIndex.Red)
+ {
+ return;
+ }
+
+ newFormat.ChannelComponent0.ShuffleIndex = ShuffleIndex.Blue;
+ newFormat.ChannelComponent2.ShuffleIndex = ShuffleIndex.Red;
+
+ result = (ErrorCode)NativeMethods.sbsario_sbsar_set_output_format_override(_handler, (IntPtr)_fileGraphID, (IntPtr)targetOutputID, ref newFormat);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+ }
+
+ #endregion Output
+
+ #region Input
+
+ ///
+ /// Get the total input count for a given graph in the substance object.
+ ///
+ /// Total graph input count.
+ public int GetInputCount()
+ {
+ return (int)NativeMethods.sbsario_sbsar_get_input_count(_handler, (IntPtr)_fileGraphID);
+ }
+
+ ///
+ /// Get the input object for a given graph in the substance object.
+ ///
+ /// Input index.
+ /// Substance input object.
+ public SubstanceInputBase GetInputObject(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ if (result == ErrorCode.SBSARIO_ERROR_FAILURE)
+ {
+ Debug.LogWarning($"Unable to load input from graphID: {_fileGraphID} and inputID:{inputID}. The input type is not supported.");
+ return SubstanceInputFactory.CreateInvalidInput(inputID);
+ }
+
+ throw new SubstanceException(result);
+ }
+
+ var input = SubstanceInputFactory.CreateInput(inputDesc);
+ AssignInputDescription(inputID, input);
+ return input;
+ }
+
+ ///
+ /// Returns true if the target input should be visible in the editor.
+ ///
+ /// Target input ID.
+ /// True if the target input should be visible in the editor.
+ public bool IsInputVisible(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input_visibility(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeInputVisibility visibility);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ return (int)visibility.IsVisible == 1;
+ }
+
+ ///
+ /// Sets a float input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputFloat(int inputID, float value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_FLOAT;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mFloatData0 = value;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a float2 input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputFloat2(int inputID, Vector2 value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_FLOAT2;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mFloatData0 = value.x;
+ inputData.Data.mFloatData1 = value.y;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a float3 input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputFloat3(int inputID, Vector3 value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_FLOAT3;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mFloatData0 = value.x;
+ inputData.Data.mFloatData1 = value.y;
+ inputData.Data.mFloatData2 = value.z;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a float4 input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputFloat4(int inputID, Vector4 value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_FLOAT4;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mFloatData0 = value.x;
+ inputData.Data.mFloatData1 = value.y;
+ inputData.Data.mFloatData2 = value.z;
+ inputData.Data.mFloatData3 = value.w;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a int input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputInt(int inputID, int value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_INT;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mIntData0 = value;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a int2 input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputInt2(int inputID, Vector2Int value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_INT2;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mIntData0 = value.x;
+ inputData.Data.mIntData1 = value.y;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a int3 input.
+ ///
+ /// Input index.
+ /// Input value.
+ public void SetInputInt3(int inputID, Vector3Int value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_INT3;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mIntData0 = value.x;
+ inputData.Data.mIntData1 = value.y;
+ inputData.Data.mIntData2 = value.z;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ ///
+ /// Sets a int4 input.
+ ///
+ /// Input index.
+ /// Input x value.
+ /// Input y value.
+ /// Input z value.
+ /// Input w value.
+ public void SetInputInt4(int inputID, int x, int y, int z, int w)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_INT4;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mIntData0 = x;
+ inputData.Data.mIntData1 = y;
+ inputData.Data.mIntData2 = z;
+ inputData.Data.mIntData3 = w;
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ public void SetInputString(int inputID, string value)
+ {
+ NativeData inputData = new NativeData();
+ inputData.DataType = DataType.SBSARIO_DATA_INPUT;
+ inputData.ValueType = ValueType.SBSARIO_VALUE_STRING;
+ inputData.Index = (IntPtr)inputID;
+ inputData.Data = new DataInternalNumeric();
+ inputData.Data.mPtr = Marshal.StringToHGlobalAnsi(value);
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ public void SetInputTexture2DNull(int inputID)
+ {
+ var imageData = new NativeDataImage
+ {
+ channel_order = ChannelOrder.SBSARIO_CHANNEL_ORDER_RGBA,
+ height = IntPtr.Zero,
+ width = IntPtr.Zero
+ };
+
+ var numericData = new DataInternalNumeric
+ {
+ ImageData = imageData
+ };
+
+ NativeData inputData = new NativeData
+ {
+ DataType = DataType.SBSARIO_DATA_INPUT,
+ ValueType = ValueType.SBSARIO_VALUE_IMAGE,
+ Index = (IntPtr)inputID,
+ Data = numericData
+ };
+
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+
+ public void SetInputTexture2D(int inputID, Color32[] pixelData, int width, int height)
+ {
+ if (pixelData == null)
+ return;
+
+ Color32[] flippedData = TextureExtensions.FlipY(pixelData, width, height);
+ byte[] textureBytes = TextureExtensions.Color32ArrayToByteArray(flippedData);
+ int textureSize = Marshal.SizeOf(textureBytes[0]) * textureBytes.Length;
+ IntPtr tempNativeMemory = Marshal.AllocHGlobal(textureSize);
+ Marshal.Copy(textureBytes, 0, tempNativeMemory, textureBytes.Length);
+
+ var imageData = new NativeDataImage
+ {
+ channel_order = ChannelOrder.SBSARIO_CHANNEL_ORDER_RGBA,
+ height = (IntPtr)width,
+ width = (IntPtr)height,
+ mipmaps = (IntPtr)0,
+ image_format = TextureFormat.RGBA32.ToSubstance(),
+ data = tempNativeMemory
+ };
+
+ var numericData = new DataInternalNumeric
+ {
+ ImageData = imageData
+ };
+
+ NativeData inputData = new NativeData
+ {
+ DataType = DataType.SBSARIO_DATA_INPUT,
+ ValueType = ValueType.SBSARIO_VALUE_IMAGE,
+ Index = (IntPtr)inputID,
+ Data = numericData
+ };
+
+ try
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_set_input(_handler, (IntPtr)_fileGraphID, ref inputData);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to update Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ finally
+ {
+ Marshal.FreeHGlobal(tempNativeMemory);
+ }
+ }
+
+ public float GetInputFloat(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return inputDesc.Data.mFloatData0;
+ }
+
+ public Vector2 GetInputFloat2(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector2(inputDesc.Data.mFloatData0, inputDesc.Data.mFloatData1);
+ }
+
+ public Vector3 GetInputFloat3(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector3(inputDesc.Data.mFloatData0, inputDesc.Data.mFloatData1, inputDesc.Data.mFloatData2);
+ }
+
+ public Vector4 GetInputFloat4(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector4(inputDesc.Data.mFloatData0, inputDesc.Data.mFloatData1, inputDesc.Data.mFloatData2, inputDesc.Data.mFloatData2);
+ }
+
+ public int GetInputInt(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return inputDesc.Data.mIntData0;
+ }
+
+ public Vector2Int GetInputInt2(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector2Int(inputDesc.Data.mIntData0, inputDesc.Data.mIntData1);
+ }
+
+ public Vector3Int GetInputInt3(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector3Int(inputDesc.Data.mIntData0, inputDesc.Data.mIntData1, inputDesc.Data.mIntData2);
+ }
+
+ public int[] GetInputInt4(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new int[] { inputDesc.Data.mIntData0, inputDesc.Data.mIntData1, inputDesc.Data.mIntData2, inputDesc.Data.mIntData2 };
+ }
+
+ public string GetInputString(int inputID)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeData inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input {inputID} for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return Marshal.PtrToStringAnsi(inputDesc.Data.mPtr);
+ }
+
+ #endregion Input
+
+ public IntPtr GetNativeHandle()
+ {
+ return _handler;
+ }
+
+ public int GetFileGraphID()
+ {
+ return _fileGraphID;
+ }
+
+ #region IDisposable
+
+ public void Dispose()
+ {
+ Dispose(disposing: true);
+ GC.SuppressFinalize(this);
+ }
+
+ private void Dispose(bool disposing)
+ {
+ if (!_disposedValue)
+ {
+ if (_handler != default)
+ {
+ NativeMethods.sbsario_sbsar_close(_handler);
+ _handler = default;
+ }
+
+ _disposedValue = true;
+ }
+ }
+
+ ~SubstanceNativeGraph()
+ {
+ Dispose(disposing: false);
+ }
+
+ #endregion IDisposable
+
+ private void AssignInputDescription(int inputID, SubstanceInputBase input)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_input_desc(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeInputDesc inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ var identifier = inputDesc.mIdentifier == default ? null : Marshal.PtrToStringAnsi(inputDesc.mIdentifier);
+ var label = inputDesc.mLabel == default ? null : Marshal.PtrToStringAnsi(inputDesc.mLabel);
+ var guiGroup = inputDesc.GuiGroup == default ? null : Marshal.PtrToStringAnsi(inputDesc.GuiGroup);
+ var guiDescription = inputDesc.GuiDescription == default ? null : Marshal.PtrToStringAnsi(inputDesc.GuiDescription);
+
+ input.Description = new SubstanceInputDescription()
+ {
+ Identifier = identifier,
+ Label = label,
+ GuiGroup = guiGroup,
+ GuiDescription = guiDescription,
+ Type = ((ValueType)inputDesc.mValueType).ToUnity(),
+ WidgetType = ((WidgetType)inputDesc.inputWidgetType).ToUnity()
+ };
+
+ if (input.IsNumeric)
+ AssignNumericInputDescription(inputID, input);
+ }
+
+ private void AssignNumericInputDescription(int inputID, SubstanceInputBase substanceInput)
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_numeric_input_desc(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, out NativeNumericInputDesc inputDesc);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ throw new SubstanceException(result);
+
+ substanceInput.SetNumericDescription(inputDesc);
+
+ if ((int)(inputDesc.enumValueCount) != 0)
+ {
+ var count = (int)inputDesc.enumValueCount;
+
+ NativeEnumInputDesc[] buffer = new NativeEnumInputDesc[count];
+ GCHandle gcHandle = GCHandle.Alloc(buffer, GCHandleType.Pinned);
+ IntPtr pointer = gcHandle.AddrOfPinnedObject();
+
+ try
+ {
+ result = (ErrorCode)NativeMethods.sbsario_sbsar_get_enum_input_desc(_handler, (IntPtr)_fileGraphID, (IntPtr)inputID, pointer, inputDesc.enumValueCount);
+ substanceInput.SetEnumOptions(buffer);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError("Unable to get data for enum.");
+ return;
+ }
+ }
+ finally
+ {
+ gcHandle.Free();
+ }
+ }
+ }
+
+ public Vector3 GetPhysicalSize()
+ {
+ ErrorCode result = (ErrorCode)NativeMethods.sbsario_sbsar_get_physical_size(_handler, (IntPtr)_fileGraphID, out NativePhysicalSize nativePhysicalSize);
+
+ if (result != ErrorCode.SBSARIO_ERROR_OK)
+ {
+ Debug.LogError($"Fail to get Substance input physical size for graph {_fileGraphID}");
+ throw new SubstanceException(result);
+ }
+
+ return new Vector3(nativePhysicalSize.X, nativePhysicalSize.Y, nativePhysicalSize.Z);
+ }
+ }
+} // namespace Adobe.Substance
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs.meta
new file mode 100644
index 0000000..40e95b2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/SubstanceNativeGraph.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 497917f7329a849dc8e059ad36608990
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects.meta
new file mode 100644
index 0000000..2ce5f0c
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4bf461d4804d46f47ba6d17adac26bfd
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums.meta
new file mode 100644
index 0000000..162a236
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e1b7ac5a63cb24c4a8b836efecf5b432
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs
new file mode 100644
index 0000000..ebf6e60
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public enum ShuffleIndex
+ {
+ Red = 0,
+ Green = 1,
+ Blue = 2,
+ AlphaChannel = 3
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs.meta
new file mode 100644
index 0000000..6605d38
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/ShuffleIndex.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 19b7748e2fed01745849ab203806a4da
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs
new file mode 100644
index 0000000..4a4224b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs
@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Types of values supported by the substance Engine.
+ ///
+ public enum SubstanceValueType : uint
+ {
+ Float,
+ Float2,
+ Float3,
+ Float4,
+ Int,
+ Int2,
+ Int3,
+ Int4,
+ Image,
+ String,
+ Font,
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs.meta
new file mode 100644
index 0000000..d1728be
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceValueType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4e3e8edcd045aa4439639e4dd4a876e1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs
new file mode 100644
index 0000000..7f4b1aa
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs
@@ -0,0 +1,21 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Represents different types of widgets used to assign input values.
+ ///
+ public enum SubstanceWidgetType
+ {
+ NoWidget,
+ Slider,
+ Angle,
+ Color,
+ ToggleButton,
+ ComboBox,
+ Image,
+ Position
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs.meta
new file mode 100644
index 0000000..e41c2f5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/SubstanceWidgetType.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 73d408e59cbb3044e807be21f8dce834
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs
new file mode 100644
index 0000000..bc672c7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs
@@ -0,0 +1,14 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public enum TextureFlip
+ {
+ None = 0x0,
+ Horizontal = 0x1,
+ Vertical = 0x2,
+ Both = 0x3
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs.meta
new file mode 100644
index 0000000..8574deb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Enums/TextureFlip.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 01ed99cadd094f841b47e95378e7d415
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs.meta
new file mode 100644
index 0000000..b3c8388
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d0e13b745090064e9c7e0bbd2b23b47
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions.meta
new file mode 100644
index 0000000..a537e86
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8d3285958facb6f44b410e1c81fa19c1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs
new file mode 100644
index 0000000..6021beb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public interface ISubstanceInputDescNumerical
+ {
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs.meta
new file mode 100644
index 0000000..bae2740
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/ISubstanceInputDescNumerical.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c6c5115cae5711a46a6d74d20391cfb8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs
new file mode 100644
index 0000000..7927d62
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs
@@ -0,0 +1,56 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type float.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalFloat : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public float DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public float MinValue;
+
+ ///
+ /// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public float MaxValue;
+
+ ///
+ /// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public float SliderStep;
+
+ ///
+ /// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
+ ///
+ public SubstanceFloatEnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceFloatEnumOption
+ {
+ public float Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs.meta
new file mode 100644
index 0000000..ea0a545
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 17cc9d69d9e234541a84546059a02135
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs
new file mode 100644
index 0000000..0c3bdb9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs
@@ -0,0 +1,56 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type float 2.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalFloat2 : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public Vector2 DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public Vector2 MinValue;
+
+ ///
+ /// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public Vector2 MaxValue;
+
+ ///
+ /// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public float SliderStep;
+
+ ///
+ /// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
+ ///
+ public SubstanceFloat2EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceFloat2EnumOption
+ {
+ public Vector2 Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs.meta
new file mode 100644
index 0000000..23f32ac
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6cd3bc40ad7c1cc41bc69189c63590b2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs
new file mode 100644
index 0000000..dc11dc6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs
@@ -0,0 +1,56 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type float3.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalFloat3 : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public Vector3 DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public Vector3 MinValue;
+
+ ///
+ /// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public Vector3 MaxValue;
+
+ ///
+ /// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public float SliderStep;
+
+ ///
+ /// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
+ ///
+ public SubstanceFloat3EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceFloat3EnumOption
+ {
+ public Vector3 Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs.meta
new file mode 100644
index 0000000..ba4ad5a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 95d340e6db1018d4888654b6d6e4bfbc
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs
new file mode 100644
index 0000000..81310d2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs
@@ -0,0 +1,56 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type float4.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalFloat4 : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public Vector4 DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public Vector4 MinValue;
+
+ ///
+ /// Maximum value (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public Vector4 MaxValue;
+
+ ///
+ /// Slider step size (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public float SliderStep;
+
+ ///
+ /// Should the slider clamp the value? (UI hint only) (Only relevant if widget is Input_Slider)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
+ ///
+ public SubstanceFloat4EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceFloat4EnumOption
+ {
+ public Vector4 Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs.meta
new file mode 100644
index 0000000..d27d030
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalFloat4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b59f3763c24dd4b489b67cbf059c97e7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs
new file mode 100644
index 0000000..8abe5d3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs
@@ -0,0 +1,63 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type int.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalInt : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public int DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public int MinValue;
+
+ ///
+ /// Maximum value. Only relevant if widget is Slider (UI hint only)
+ ///
+ public int MaxValue;
+
+ ///
+ /// Slider step size. Only relevant if widget is Slider (UI hint only).
+ ///
+ public float SliderStep;
+
+ ///
+ /// True if the slider value is clamped. Only relevant if widget is Slider (UI hint only)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// If non-empty, the labels to use for False (unchecked) and True (checked) values. Only relevant if widget is Input_Togglebutton
+ ///
+ public string LabelFalse;
+
+ public string LabelTrue;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is SBSARIO_WIDGET_COMBOBOX (UI hint only).
+ ///
+ public SubstanceIntEnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceIntEnumOption
+ {
+ public int Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs.meta
new file mode 100644
index 0000000..869c37b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4505bd299acddfa42a93618bb3eb3144
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs
new file mode 100644
index 0000000..27d5667
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs
@@ -0,0 +1,51 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ ///
+ /// Numeric input description for input of type int2.
+ ///
+ [System.Serializable]
+ public class SubstanceInputDescNumericalInt2 : ISubstanceInputDescNumerical
+ {
+ ///
+ /// Default input value
+ ///
+ public Vector2Int DefaultValue;
+
+ ///
+ /// Minimum value (UI hint only)
+ ///
+ public Vector2Int MinValue;
+
+ ///
+ /// Maximum value. Only relevant if widget is Slider (UI hint only)
+ ///
+ public Vector2Int MaxValue;
+
+ ///
+ /// True if the slider value is clamped. Only relevant if widget is Slider (UI hint only)
+ ///
+ public bool SliderClamp;
+
+ ///
+ /// Number of enum option for this value.
+ ///
+ public int EnumValueCount;
+
+ ///
+ /// Array of enum values for this property. Only relevant if widget is ComboBox (UI hint only).
+ ///
+ public SubstanceInt2EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceInt2EnumOption
+ {
+ public Vector2Int Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs.meta
new file mode 100644
index 0000000..620fac8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f227c26b9ad4bc144b20f140676c3d39
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs
new file mode 100644
index 0000000..2aac540
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs
@@ -0,0 +1,32 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ [System.Serializable]
+ public class SubstanceInputDescNumericalInt3 : ISubstanceInputDescNumerical
+ {
+ public Vector3Int DefaultValue;
+
+ public Vector3Int MinValue;
+
+ public Vector3Int MaxValue;
+
+ public Vector3Int SliderStep;
+
+ public bool SliderClamp;
+
+ public int EnumValueCount;
+
+ public SubstanceInt3EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceInt3EnumOption
+ {
+ public Vector3Int Value;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs.meta
new file mode 100644
index 0000000..02fdf80
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 36e74c56f6c8da5478de4fa824d907ac
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs
new file mode 100644
index 0000000..43df391
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs
@@ -0,0 +1,47 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ [System.Serializable]
+ public class SubstanceInputDescNumericalInt4 : ISubstanceInputDescNumerical
+ {
+ public int DefaultValue0;
+ public int DefaultValue1;
+ public int DefaultValue2;
+ public int DefaultValue3;
+
+ public int MinValue0;
+ public int MinValue1;
+ public int MinValue2;
+ public int MinValue3;
+
+ public int MaxValue0;
+ public int MaxValue1;
+ public int MaxValue2;
+ public int MaxValue3;
+
+ public int SliderStep0;
+ public int SliderStep1;
+ public int SliderStep2;
+ public int SliderStep3;
+
+ public bool SliderClamp;
+
+ public int EnumValueCount;
+
+ public SubstanceInt4EnumOption[] EnumValues;
+ }
+
+ [System.Serializable]
+ public class SubstanceInt4EnumOption
+ {
+ public int Value0;
+ public int Value1;
+ public int Value2;
+ public int Value3;
+
+ public string Label;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs.meta
new file mode 100644
index 0000000..a946d0e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescNumericalInt4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7ba763c16c13298419198087a5b6db66
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs
new file mode 100644
index 0000000..dc54dd0
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs
@@ -0,0 +1,21 @@
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input.Description
+{
+ [System.Serializable]
+ public class SubstanceInputDescription
+ {
+ public string Identifier;
+
+ public string Label;
+
+ public string GuiGroup;
+
+ public string GuiDescription;
+
+ public SubstanceValueType Type;
+
+ public SubstanceWidgetType WidgetType;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs.meta
new file mode 100644
index 0000000..ad5a478
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Descriptions/SubstanceInputDescription.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc6a243b92a09374d89b9c500fffa0e9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs
new file mode 100644
index 0000000..a3c5e57
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs
@@ -0,0 +1,117 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ public interface ISubstanceInput
+ {
+ int Index { get; }
+
+ SubstanceValueType ValueType { get; }
+
+ bool IsNumeric { get; }
+
+ bool IsValid { get; }
+ SubstanceInputDescription Description { get; }
+
+ void UpdateNativeHandle(SubstanceNativeGraph handler);
+
+ internal void SetNumericDescription(NativeNumericInputDesc desc);
+
+ ///
+ /// Assigns the native enum data from the substance engine to the numerical input description (Only valid if input is numeric)
+ ///
+ ///
+ internal void SetEnumOptions(NativeEnumInputDesc[] options);
+
+ bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description);
+ }
+
+ ///
+ /// Interface for representing all the different types of substance graph inputs.
+ ///
+ public abstract class SubstanceInputBase : ISubstanceInput
+ {
+ ///
+ /// Input index inside the Substance Graph.
+ ///
+ public int Index;
+
+ ///
+ /// Input type.
+ ///
+ public abstract SubstanceValueType ValueType { get; }
+
+ ///
+ /// True if this input is numeric.
+ ///
+ public abstract bool IsNumeric { get; }
+
+ ///
+ /// True if this input is supported by the Unity plugin.
+ ///
+ public abstract bool IsValid { get; }
+
+ ///
+ /// Description with aditional information about the input.
+ ///
+ public SubstanceInputDescription Description;
+
+ ///
+ /// Updates the native side of the substance engine with the current value for this input.
+ ///
+ ///
+ public virtual void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ }
+
+ public virtual bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = null;
+ return false;
+ }
+
+ ///
+ /// Assigns the native data from the substance engine to the numerical input description (Only valid if input is numeric)
+ ///
+ ///
+ internal virtual void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ }
+
+ ///
+ /// Assigns the native enum data from the substance engine to the numerical input description (Only valid if input is numeric)
+ ///
+ ///
+ internal virtual void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ }
+
+ #region ISubstanceInput
+
+ int ISubstanceInput.Index => Index;
+
+ SubstanceInputDescription ISubstanceInput.Description => Description;
+
+ SubstanceValueType ISubstanceInput.ValueType => ValueType;
+
+ bool ISubstanceInput.IsNumeric => IsNumeric;
+
+ bool ISubstanceInput.IsValid => IsValid;
+
+ void ISubstanceInput.SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ SetNumericDescription(desc);
+ }
+
+ void ISubstanceInput.SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ SetEnumOptions(options);
+ }
+
+ #endregion ISubstanceInput
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs.meta
new file mode 100644
index 0000000..431ac89
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/ISubstanceInput.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 82a826b2d9a131a4598c52e033409dae
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs
new file mode 100644
index 0000000..52bd597
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs
@@ -0,0 +1,67 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance.Input
+{
+ ///
+ /// Static factory for creating Unity input object from native data.
+ ///
+ public static class SubstanceInputFactory
+ {
+ ///
+ /// Create a unity data object from native substance data.
+ ///
+ /// Native data.
+ /// Instance of a substance input interface object.
+ internal static SubstanceInputBase CreateInput(NativeData nativeData)
+ {
+ int index = (int)nativeData.Index;
+ DataInternalNumeric data = nativeData.Data;
+
+ switch (nativeData.ValueType)
+ {
+ case ValueType.SBSARIO_VALUE_FLOAT:
+ return new SubstanceInputFloat(index, data);
+
+ case ValueType.SBSARIO_VALUE_FLOAT2:
+ return new SubstanceInputFloat2(index, data);
+
+ case ValueType.SBSARIO_VALUE_FLOAT3:
+ return new SubstanceInputFloat3(index, data);
+
+ case ValueType.SBSARIO_VALUE_FLOAT4:
+ return new SubstanceInputFloat4(index, data);
+
+ case ValueType.SBSARIO_VALUE_INT:
+ return new SubstanceInputInt(index, data);
+
+ case ValueType.SBSARIO_VALUE_INT2:
+ return new SubstanceInputInt2(index, data);
+
+ case ValueType.SBSARIO_VALUE_INT3:
+ return new SubstanceInputInt3(index, data);
+
+ case ValueType.SBSARIO_VALUE_INT4:
+ return new SubstanceInputInt4(index, data);
+
+ case ValueType.SBSARIO_VALUE_IMAGE:
+ return new SubstanceInputTexture(index, data);
+
+ case ValueType.SBSARIO_VALUE_STRING:
+ return new SubstanceInputString(index, data);
+
+ case ValueType.SBSARIO_VALUE_FONT:
+ return new SubstanceInputFont(index, data);
+
+ default:
+ throw new System.InvalidOperationException($"Can not create unity type from native data for type {nativeData.ValueType}.");
+ }
+ }
+
+ internal static SubstanceInputBase CreateInvalidInput(int inputID)
+ {
+ return new SubstanceInvalidInput(inputID);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs.meta
new file mode 100644
index 0000000..e6b5024
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/SubstanceInputFactory.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bb4c90b1beaaf634092abf47829fe011
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values.meta
new file mode 100644
index 0000000..17fd4b8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a314bf34bf71b50468f5d639e47d5c14
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs
new file mode 100644
index 0000000..9ca1f09
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs
@@ -0,0 +1,71 @@
+using Adobe.Substance.Input.Description;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance.Input
+{
+ [Serializable]
+ public class SubstanceInputFloat : SubstanceInputBase
+ {
+ public float Data;
+
+ public SubstanceInputDescNumericalFloat NumericalDescription;
+
+ public override bool IsNumeric => true;
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Float;
+
+ internal SubstanceInputFloat(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = data.mFloatData0;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputFloat(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalFloat
+ {
+ DefaultValue = desc.default_value.mFloatData0,
+ MaxValue = desc.max_value.mFloatData0,
+ MinValue = desc.min_value.mFloatData0,
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ SliderStep = desc.sliderStep,
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceFloatEnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceFloatEnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = options[i].value.mFloatData0
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs.meta
new file mode 100644
index 0000000..871c609
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6a2b5e2d6e8627946aee84ca2cad43a2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs
new file mode 100644
index 0000000..cf12cd4
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs
@@ -0,0 +1,71 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputFloat2 : SubstanceInputBase
+ {
+ public Vector2 Data;
+
+ public SubstanceInputDescNumericalFloat2 NumericalDescription;
+
+ public override SubstanceValueType ValueType => SubstanceValueType.Float2;
+ public override bool IsNumeric => true;
+ public override bool IsValid => true;
+
+ internal SubstanceInputFloat2(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = new Vector2(data.mFloatData0, data.mFloatData1);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputFloat2(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalFloat2
+ {
+ DefaultValue = new Vector2(desc.default_value.mFloatData0, desc.default_value.mFloatData1),
+ MaxValue = new Vector2(desc.max_value.mFloatData0, desc.max_value.mFloatData1),
+ MinValue = new Vector2(desc.min_value.mFloatData0, desc.min_value.mFloatData1),
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ SliderStep = desc.sliderStep,
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceFloat2EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceFloat2EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = new Vector2(options[i].value.mFloatData0, options[i].value.mFloatData1)
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs.meta
new file mode 100644
index 0000000..e75becb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d0c4e3cee5c04494089d8b2b921a09a7
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs
new file mode 100644
index 0000000..06cdf9f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs
@@ -0,0 +1,71 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputFloat3 : SubstanceInputBase
+ {
+ public Vector3 Data;
+
+ public SubstanceInputDescNumericalFloat3 NumericalDescription;
+
+ public override SubstanceValueType ValueType => SubstanceValueType.Float3;
+ public override bool IsNumeric => true;
+ public override bool IsValid => true;
+
+ internal SubstanceInputFloat3(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = new Vector3(data.mFloatData0, data.mFloatData1, data.mFloatData2);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputFloat3(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalFloat3
+ {
+ DefaultValue = new Vector3(desc.default_value.mFloatData0, desc.default_value.mFloatData1, desc.default_value.mFloatData2),
+ MaxValue = new Vector3(desc.max_value.mFloatData0, desc.max_value.mFloatData1, desc.max_value.mFloatData2),
+ MinValue = new Vector3(desc.min_value.mFloatData0, desc.min_value.mFloatData1, desc.min_value.mFloatData2),
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ SliderStep = desc.sliderStep,
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceFloat3EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceFloat3EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = new Vector3(options[i].value.mFloatData0, options[i].value.mFloatData1, options[i].value.mFloatData2)
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs.meta
new file mode 100644
index 0000000..8d16058
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 972cacc8762922b4c899c029ca6f30ee
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs
new file mode 100644
index 0000000..2d0e03d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs
@@ -0,0 +1,71 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputFloat4 : SubstanceInputBase
+ {
+ public Vector4 Data;
+
+ public SubstanceInputDescNumericalFloat4 NumericalDescription;
+
+ public override bool IsNumeric => true;
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Float4;
+
+ internal SubstanceInputFloat4(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = new Vector4(data.mFloatData0, data.mFloatData1, data.mFloatData2, data.mFloatData3);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputFloat4(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalFloat4
+ {
+ DefaultValue = new Vector4(desc.default_value.mFloatData0, desc.default_value.mFloatData1, desc.default_value.mFloatData2, desc.default_value.mFloatData3),
+ MaxValue = new Vector4(desc.max_value.mFloatData0, desc.max_value.mFloatData1, desc.max_value.mFloatData2, desc.max_value.mFloatData3),
+ MinValue = new Vector4(desc.min_value.mFloatData0, desc.min_value.mFloatData1, desc.min_value.mFloatData2, desc.min_value.mFloatData3),
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ SliderStep = desc.sliderStep,
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceFloat4EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceFloat4EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = new Vector4(options[i].value.mFloatData0, options[i].value.mFloatData1, options[i].value.mFloatData2, options[i].value.mFloatData3)
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs.meta
new file mode 100644
index 0000000..8c87c1a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFloat4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 38a7b8b2e997dce43af21e967aabeb90
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs
new file mode 100644
index 0000000..be5bec8
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs
@@ -0,0 +1,37 @@
+using System;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputFont : SubstanceInputBase
+ {
+ public Font Data;
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Font;
+ public override bool IsNumeric => false;
+ public ISubstanceInputDescNumerical NumericalDescription => null;
+
+ internal SubstanceInputFont(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = null;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ return;
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs.meta
new file mode 100644
index 0000000..e100a7d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputFont.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b54963e3fd7509d47a7807204ab5ad0c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs
new file mode 100644
index 0000000..74bccfc
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs
@@ -0,0 +1,69 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputInt : SubstanceInputBase
+ {
+ public int Data;
+
+ public SubstanceInputDescNumericalInt NumericalDescription;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Int;
+ public override bool IsNumeric => true;
+
+ internal SubstanceInputInt(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = data.mIntData0;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputInt(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalInt
+ {
+ DefaultValue = desc.default_value.mIntData0,
+ MaxValue = desc.max_value.mIntData0,
+ MinValue = desc.min_value.mIntData0,
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ SliderStep = desc.sliderStep,
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceIntEnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceIntEnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = options[i].value.mIntData0
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs.meta
new file mode 100644
index 0000000..434f619
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1601ac9007c2d7a40a34b1bb071fd814
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs
new file mode 100644
index 0000000..5ebddaf
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs
@@ -0,0 +1,64 @@
+using System;
+using UnityEngine;
+using System.Runtime.InteropServices;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputInt2 : SubstanceInputBase
+ {
+ public Vector2Int Data;
+
+ public SubstanceInputDescNumericalInt2 NumericalDescription;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Int2;
+ public override bool IsNumeric => true;
+
+ internal SubstanceInputInt2(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = new Vector2Int(data.mIntData0, data.mIntData1);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputInt2(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalInt2
+ {
+ DefaultValue = new Vector2Int(desc.default_value.mIntData0, desc.default_value.mIntData1),
+ MaxValue = new Vector2Int(desc.max_value.mIntData0, desc.max_value.mIntData1),
+ MinValue = new Vector2Int(desc.min_value.mIntData0, desc.min_value.mIntData1),
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceInt2EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceInt2EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = new Vector2Int(options[i].value.mIntData0, options[i].value.mIntData1)
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs.meta
new file mode 100644
index 0000000..3c368af
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt2.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1edf95e7b56e87b43bf900d164c150b9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs
new file mode 100644
index 0000000..ed4c4f3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs
@@ -0,0 +1,64 @@
+using UnityEngine;
+using System;
+using System.Runtime.InteropServices;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputInt3 : SubstanceInputBase
+ {
+ public Vector3Int Data;
+
+ public SubstanceInputDescNumericalInt3 NumericalDescription;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Int3;
+ public override bool IsNumeric => true;
+
+ internal SubstanceInputInt3(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = new Vector3Int(data.mIntData0, data.mIntData1, data.mIntData2);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputInt3(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalInt3
+ {
+ DefaultValue = new Vector3Int(desc.default_value.mIntData0, desc.default_value.mIntData1, desc.default_value.mIntData2),
+ MaxValue = new Vector3Int(desc.max_value.mIntData0, desc.max_value.mIntData1, desc.max_value.mIntData2),
+ MinValue = new Vector3Int(desc.min_value.mIntData0, desc.min_value.mIntData1, desc.min_value.mIntData2),
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceInt3EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceInt3EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value = new Vector3Int(options[i].value.mIntData0, options[i].value.mIntData1, options[i].value.mIntData2)
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs.meta
new file mode 100644
index 0000000..c955604
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt3.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 920e7de597d6a3744b255c5fa47734d5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs
new file mode 100644
index 0000000..b61cf63
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs
@@ -0,0 +1,92 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [Serializable]
+ public class SubstanceInputInt4 : SubstanceInputBase
+ {
+ public int Data0;
+
+ public int Data1;
+
+ public int Data2;
+
+ public int Data3;
+
+ public SubstanceInputDescNumericalInt4 NumericalDescription;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Int4;
+ public override bool IsNumeric => true;
+
+ internal SubstanceInputInt4(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data0 = data.mIntData0;
+ Data1 = data.mIntData1;
+ Data2 = data.mIntData2;
+ Data3 = data.mIntData3;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputInt4(Index, Data0, Data1, Data2, Data3);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ NumericalDescription = new SubstanceInputDescNumericalInt4
+ {
+ DefaultValue0 = desc.default_value.mIntData0,
+ DefaultValue1 = desc.default_value.mIntData1,
+ DefaultValue2 = desc.default_value.mIntData2,
+ DefaultValue3 = desc.default_value.mIntData3,
+
+ MaxValue0 = desc.max_value.mIntData0,
+ MaxValue1 = desc.max_value.mIntData1,
+ MaxValue2 = desc.max_value.mIntData2,
+ MaxValue3 = desc.max_value.mIntData3,
+
+ MinValue0 = desc.min_value.mIntData0,
+ MinValue1 = desc.min_value.mIntData1,
+ MinValue2 = desc.min_value.mIntData2,
+ MinValue3 = desc.min_value.mIntData3,
+
+ SliderClamp = Convert.ToBoolean(desc.sliderClamp.ToInt32()),
+ EnumValueCount = desc.enumValueCount.ToInt32()
+ };
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ NumericalDescription.EnumValues = new SubstanceInt4EnumOption[options.Length];
+
+ for (int i = 0; i < NumericalDescription.EnumValues.Length; i++)
+ {
+ var option = new SubstanceInt4EnumOption
+ {
+ Label = Marshal.PtrToStringAnsi(options[i].label),
+ Value0 = options[i].value.mIntData0,
+ Value1 = options[i].value.mIntData1,
+ Value2 = options[i].value.mIntData2,
+ Value3 = options[i].value.mIntData3
+ };
+
+ NumericalDescription.EnumValues[i] = option;
+ }
+
+ return;
+ }
+
+ public override bool TryGetNumericalDescription(out ISubstanceInputDescNumerical description)
+ {
+ description = NumericalDescription;
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs.meta
new file mode 100644
index 0000000..7cee699
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputInt4.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bf61790262550134a96f236697c83fe8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs
new file mode 100644
index 0000000..d4ae721
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs
@@ -0,0 +1,39 @@
+using System;
+using UnityEngine;
+using System.Runtime.InteropServices;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputString : SubstanceInputBase
+ {
+ [Multiline]
+ public string Data;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.String;
+ public override bool IsNumeric => false;
+
+ internal SubstanceInputString(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = Marshal.PtrToStringAnsi(data.mPtr);
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ handler.SetInputString(Index, Data);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs.meta
new file mode 100644
index 0000000..d9882ca
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputString.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3466988ea5300af49966ff9b94174f4c
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs
new file mode 100644
index 0000000..e8553fb
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs
@@ -0,0 +1,49 @@
+using System;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+using System.Runtime.InteropServices;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInputTexture : SubstanceInputBase
+ {
+ [SerializeField]
+ private Texture2D Data;
+
+ public override bool IsValid => true;
+ public override SubstanceValueType ValueType => SubstanceValueType.Image;
+ public override bool IsNumeric => false;
+
+ internal SubstanceInputTexture(int index, DataInternalNumeric data)
+ {
+ Index = index;
+ Data = null;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ if (Data == null)
+ return;
+
+ if (!Data.isReadable)
+ {
+ Debug.LogWarning($"Input textures must be set as readable. Texture assigned to {Description.Identifier} will have no effect.");
+ return;
+ }
+
+ var pixels = Data.GetPixels32();
+ handler.SetInputTexture2D(Index, pixels, Data.width, Data.height);
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs.meta
new file mode 100644
index 0000000..0aa5fe2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInputTexture.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1c1f96014c3c29946a956e0f6e220a34
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs
new file mode 100644
index 0000000..ddb141e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs
@@ -0,0 +1,34 @@
+using System;
+using UnityEngine;
+using Adobe.Substance.Input.Description;
+
+namespace Adobe.Substance.Input
+{
+ [System.Serializable]
+ public class SubstanceInvalidInput : SubstanceInputBase
+ {
+ public override bool IsValid => false;
+ public override SubstanceValueType ValueType => Description.Type;
+ public override bool IsNumeric => false;
+
+ public SubstanceInvalidInput(int index)
+ {
+ Index = index;
+ }
+
+ public override void UpdateNativeHandle(SubstanceNativeGraph handler)
+ {
+ return;
+ }
+
+ internal override void SetNumericDescription(NativeNumericInputDesc desc)
+ {
+ return;
+ }
+
+ internal override void SetEnumOptions(NativeEnumInputDesc[] options)
+ {
+ return;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs.meta
new file mode 100644
index 0000000..6dc02e5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Inputs/Values/SubstanceInvalidInput.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 1cdb98b233312594e90f752da97365a4
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs.meta
new file mode 100644
index 0000000..975e826
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: db03028550561014ba04fce2cb7449ac
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs
new file mode 100644
index 0000000..d2e0bc5
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs
@@ -0,0 +1,30 @@
+namespace Adobe.Substance
+{
+ [System.Serializable]
+ public class SubstanceOutputDescription
+ {
+ [UnityEngine.SerializeField]
+ public string Identifier;
+
+ [UnityEngine.SerializeField]
+ public string Label;
+
+ [UnityEngine.SerializeField]
+ public int Index;
+
+ [UnityEngine.SerializeField]
+ public SubstanceValueType Type;
+
+ [UnityEngine.SerializeField]
+ public string Channel;
+
+ public override string ToString()
+ {
+ return $"Identifier: {Identifier}\n" +
+ $"Label:{Label}\n" +
+ $"Index:{Index}\n" +
+ $"Type:{Type}\n" +
+ $"Channel{Channel}\n";
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs.meta
new file mode 100644
index 0000000..ce8c103
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputDescription.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 06fa5ea573078b642bf69b2798e26884
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs
new file mode 100644
index 0000000..9d2d6c1
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs
@@ -0,0 +1,58 @@
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ [System.Serializable]
+ public class SubstanceOutputTexture
+ {
+ [SerializeField]
+ public int Index;
+
+ [SerializeField]
+ public int VirtualOutputIndex;
+
+ [SerializeField]
+ public SubstanceOutputDescription Description;
+
+ [SerializeField]
+ public Texture2D OutputTexture;
+
+ [SerializeField]
+ public bool sRGB;
+
+ [SerializeField]
+ public bool IsVirtual;
+
+ [SerializeField]
+ public bool IsAlphaAssignable;
+
+ [SerializeField]
+ public string AlphaChannel;
+
+ [SerializeField]
+ public bool InvertAssignedAlpha;
+
+ [SerializeField]
+ public uint Flags = 0;
+
+ [SerializeField]
+ public string MaterialTextureTarget;
+
+ public SubstanceOutputTexture(SubstanceOutputDescription description, string unityTextureName)
+ {
+ Index = description.Index;
+ Description = description;
+ MaterialTextureTarget = unityTextureName;
+
+ if (!string.IsNullOrEmpty(description.Channel))
+ IsAlphaAssignable = !string.Equals(description.Channel, "normal", System.StringComparison.OrdinalIgnoreCase);
+ else
+ IsAlphaAssignable = false;
+
+ IsVirtual = false;
+ sRGB = false;
+ OutputTexture = null;
+ AlphaChannel = string.Empty;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs.meta
new file mode 100644
index 0000000..fff4c91
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceOutputTexture.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4eb2b73a785c95a4c87339cd11964fb2
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs
new file mode 100644
index 0000000..e4a9a16
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs
@@ -0,0 +1,102 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public class SubstanceVirtualOutputChannelInfo
+ {
+ public uint ChannelSource { get; }
+
+ public ShuffleIndex Index { get; }
+
+ public bool Invert { get; }
+
+ private const uint SBSARIO_USE_DEFAULT = ~0u;
+
+ private const uint SBSARIO_COMPONENT_EMPTY = 0;
+
+ public SubstanceVirtualOutputChannelInfo(uint outputUID, ShuffleIndex index = ShuffleIndex.Red, bool invert = false)
+ {
+ ChannelSource = outputUID;
+ Index = index;
+ Invert = invert;
+ }
+
+ internal NativeOutputFormatComponent CreateNativeComponent()
+ {
+ return new NativeOutputFormatComponent()
+ {
+ levelMax = Invert ? 0 : 1,
+ levelMin = Invert ? 1 : 0,
+ outputIndex = ChannelSource,
+ ShuffleIndex = Index
+ };
+ }
+
+ public readonly static SubstanceVirtualOutputChannelInfo Default = new SubstanceVirtualOutputChannelInfo(SBSARIO_USE_DEFAULT);
+
+ public readonly static SubstanceVirtualOutputChannelInfo Black = new SubstanceVirtualOutputChannelInfo(SBSARIO_COMPONENT_EMPTY, ShuffleIndex.Red);
+
+ public static SubstanceVirtualOutputChannelInfo White = new SubstanceVirtualOutputChannelInfo(SBSARIO_COMPONENT_EMPTY, ShuffleIndex.Red, true);
+ }
+
+ public class SubstanceVirtualOutputCreateInfo
+ {
+ public TextureFormat Format { get; }
+
+ public string Label { get; }
+
+ public TextureFlip FlipOption { get; }
+
+ public SubstanceVirtualOutputChannelInfo RedChannelSource { get; }
+
+ public SubstanceVirtualOutputChannelInfo GreenChannelSource { get; }
+
+ public SubstanceVirtualOutputChannelInfo BlueChannelSource { get; }
+
+ public SubstanceVirtualOutputChannelInfo AlphaChannelSource { get; }
+
+ public SubstanceVirtualOutputCreateInfo(TextureFormat format,
+ string name,
+ TextureFlip flip = TextureFlip.None,
+ params SubstanceVirtualOutputChannelInfo[] channels)
+ {
+ Format = format;
+ Label = name;
+ FlipOption = flip;
+ RedChannelSource = channels.Length > 0 ? channels[0] : SubstanceVirtualOutputChannelInfo.Default;
+ GreenChannelSource = channels.Length > 1 ? channels[1] : SubstanceVirtualOutputChannelInfo.Default;
+ BlueChannelSource = channels.Length > 2 ? channels[2] : SubstanceVirtualOutputChannelInfo.Default;
+ AlphaChannelSource = channels.Length > 3 ? channels[3] : SubstanceVirtualOutputChannelInfo.Default;
+ }
+
+ internal NativeOutputDesc CreateOutputDesc()
+ {
+ var labelPtr = Marshal.StringToHGlobalAnsi(Label);
+
+ return new NativeOutputDesc()
+ {
+ mLabel = labelPtr,
+ mIdentifier = labelPtr,
+ mValueType = ValueType.SBSARIO_VALUE_IMAGE,
+ };
+ }
+
+ internal NativeOutputFormat CreateOutputFormat()
+ {
+ var format = new NativeOutputFormat
+ {
+ hvFlip = FlipOption.ToSubstance(),
+ format = (uint)Format.ToSubstance()
+ };
+
+ format.ChannelComponent0 = RedChannelSource.CreateNativeComponent();
+ format.ChannelComponent1 = GreenChannelSource.CreateNativeComponent();
+ format.ChannelComponent2 = BlueChannelSource.CreateNativeComponent();
+ format.ChannelComponent3 = AlphaChannelSource.CreateNativeComponent();
+ return format;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs.meta
new file mode 100644
index 0000000..c4be469
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/Outputs/SubstanceVirtualOutputCreateInfo.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c9be437653642a947898654bbb857e27
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs
new file mode 100644
index 0000000..b7e656b
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs
@@ -0,0 +1,12 @@
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ [PreferBinarySerialization]
+ public class SubstanceFileRawData : ScriptableObject
+ {
+ [SerializeField]
+ [HideInInspector]
+ public byte[] FileContent = default;
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs.meta
new file mode 100644
index 0000000..8053d34
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileRawData.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9349db640c23d1b4ead3baa0734949e8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs
new file mode 100644
index 0000000..381fe26
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs
@@ -0,0 +1,10 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public class SubstanceFileSO : ScriptableObject
+ {
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs.meta
new file mode 100644
index 0000000..31a08f6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceFileSO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f5f261fec84a6d544a8b61047a092314
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs
new file mode 100644
index 0000000..80afb07
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs
@@ -0,0 +1,355 @@
+using Adobe.Substance.Input;
+using System;
+using System.Collections;
+using System.Collections.Concurrent;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+using System.Threading.Tasks;
+using UnityEngine;
+
+#if UNITY_EDITOR
+
+using Unity.Collections.LowLevel.Unsafe;
+
+#endif
+
+namespace Adobe.Substance
+{
+ ///
+ /// Scriptable object to store information about an instance of a sbsar file. Each instance has it own input values and output textures.
+ ///
+ public class SubstanceGraphSO : ScriptableObject
+ {
+ ///
+ /// Path to the sbsar file that owns this instance. (Editor only)
+ ///
+ [SerializeField]
+ public string AssetPath = default;
+
+ ///
+ /// Folder where assets related to this instance should be placed. (Editor only)
+ ///
+ [SerializeField]
+ public string OutputPath = default;
+
+ ///
+ /// Scriptable object that holds sbsar file binary data.
+ ///
+ [SerializeField]
+ public SubstanceFileRawData RawData = default;
+
+ ///
+ /// Name for the instance.
+ ///
+ [SerializeField]
+ public string Name = default;
+
+ ///
+ /// Is root instance.
+ ///
+ [SerializeField]
+ public bool IsRoot = false;
+
+ ///
+ /// Signalized for the API that this instance should be deleted. (Editor only)
+ ///
+ [SerializeField]
+ public bool FlagedForDelete = false;
+
+ ///
+ /// GUI to uniquely identify this instance during runtime.
+ ///
+ [SerializeField]
+ public string GUID = default;
+
+ ///
+ /// Graph index in the sbsar file. This is a property that is imported from the sbsar file and should not be assigned in Unity.
+ ///
+ [SerializeField]
+ public int Index = -1;
+
+ ///
+ /// Input list.
+ ///
+ [SerializeReference]
+ public List Input = default;
+
+ ///
+ /// Output list.
+ ///
+ [SerializeField]
+ public List Output = default;
+
+ ///
+ /// True if this graph has physical size.
+ ///
+ [SerializeField]
+ public bool HasPhysicalSize;
+
+ ///
+ /// Graph physical size. If HasPhysicalSize is false this will be Vector3.zero.
+ ///
+ [SerializeField]
+ public Vector3 PhysicalSize;
+
+ ///
+ /// If se to true physical size will be applyed to the material.
+ ///
+ [SerializeField]
+ public bool EnablePhysicalSize;
+
+ ///
+ /// Sbsar file thumbnail data.
+ ///
+ [SerializeField]
+ public byte[] Thumbnail = default;
+
+ ///
+ /// True if sbsar file has thumbnail.
+ ///
+ [SerializeField]
+ public bool HasThumbnail = false;
+
+ ///
+ /// Preset that holds the current state of the inputs. (Editor only)
+ ///
+ [SerializeField]
+ public string CurrentStatePreset = default;
+
+ ///
+ /// If true, this asset will not generate tga files for the output textures.
+ ///
+ [SerializeField]
+ public bool IsRuntimeOnly = false;
+
+ ///
+ /// True if this graph should generate all outputs.
+ ///
+ [SerializeField]
+ public bool GenerateAllOutputs = false;
+
+ ///
+ /// True if this graph should generate mipmap chain.
+ ///
+ [SerializeField]
+ public bool GenerateAllMipmaps = false;
+
+ ///
+ /// Output material.
+ ///
+ [SerializeField]
+ public Material OutputMaterial = default;
+
+ ///
+ /// Default preset for the sbsar file.
+ ///
+ [SerializeField]
+ public string DefaultPreset = default;
+
+ ///
+ /// Cached material shader name. (Editor only)
+ ///
+ [SerializeField]
+ public string MaterialShader = default;
+
+ ///
+ /// Flags that the substance native inputs should be updated and material should be rendered. (Editor only)
+ ///
+ [SerializeField, HideInInspector]
+ public bool RenderTextures = false;
+
+ ///
+ /// Flags that the current generated textures should be deleted. (Editor only)
+ ///
+ [SerializeField, HideInInspector]
+ public bool OutputRemaped = false;
+
+ ///
+ /// Initialized the substance graph. Uses the native handle to set all the input parameters, configure output textures, create Unity Texture2D objects for each output and properly assign them to the target material.
+ /// This must be called if the substance graph was flagged as Runtime only and will require its assets be generated at runtime.
+ ///
+ /// Handle to a native substance object.
+ public void RuntimeInitialize(SubstanceNativeGraph handler, bool isRuntime = false)
+ {
+ if (handler.IsInitialized)
+ return;
+
+ foreach (var input in Input)
+ input.UpdateNativeHandle(handler);
+
+ RenderingUtils.ConfigureOutputTextures(handler, this, isRuntime);
+
+ if (isRuntime)
+ {
+ var result = handler.Render();
+ CreateAndUpdateOutputTextures(result, isRuntime);
+ MaterialUtils.AssignOutputTexturesToMaterial(this);
+ }
+
+ handler.IsInitialized = true;
+ }
+
+ public Texture2D GetThumbnailTexture()
+ {
+ if (!HasThumbnail)
+ return null;
+
+ Texture2D thumbnailTexture = new Texture2D(0, 0);
+ thumbnailTexture.LoadImage(Thumbnail);
+ return thumbnailTexture;
+ }
+
+ public void CreateAndUpdateOutputTextures(IntPtr resultPtr, bool runtimeUsage = false)
+ {
+ unsafe
+ {
+ for (int i = 0; i < Output.Count; i++)
+ {
+ var output = Output[i];
+
+ if (!output.IsStandardOutput(OutputMaterial) && !GenerateAllOutputs)
+ continue;
+
+ var index = output.VirtualOutputIndex;
+ IntPtr pI = resultPtr + (index * sizeof(NativeData));
+ NativeData data = Marshal.PtrToStructure(pI);
+
+ if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
+ {
+ Debug.LogError($"Skiping render index #{index} of {output.Description.Channel} because it was not an image");
+ continue;
+ }
+
+ if (data.ValueType == ValueType.SBSARIO_VALUE_IMAGE)
+ {
+ NativeDataImage imgData = data.Data.ImageData;
+
+ if (TryGetUnityTextureFormat(imgData, runtimeUsage, out int width, out int height, out int imageSize, out TextureFormat format, out int mipsCount))
+ {
+ var texture = new Texture2D(width, height, format, GenerateAllMipmaps, IsRuntimeOnly ? !output.sRGB : output.sRGB);
+#if UNITY_EDITOR
+ texture.alphaIsTransparency = imgData.image_format.ChannelCount() == 4;
+#endif
+ output.OutputTexture = texture;
+ texture.Apply();
+ }
+ }
+ }
+ }
+
+ UpdateOutputTextures(resultPtr);
+ }
+
+ public void UpdateOutputTextures(IntPtr renderResultPtr)
+ {
+ unsafe
+ {
+ foreach (var output in Output)
+ {
+ var texture = output.OutputTexture;
+
+ if (texture == null)
+ {
+ continue;
+ }
+
+ var index = output.VirtualOutputIndex;
+ IntPtr dataPtr = renderResultPtr + (index * sizeof(NativeData));
+ NativeData data = Marshal.PtrToStructure(dataPtr);
+
+ if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
+ {
+ Debug.LogError($"Fail to update substance output: output is not an image.");
+ continue;
+ }
+
+ NativeDataImage srcImage = data.Data.ImageData;
+
+ if (texture.format != TextureFormat.RGBA32 && texture.format != TextureFormat.BGRA32)
+ {
+ Debug.LogError($"Fail to update target texture. Output textures are expected to be RGBA32 or BGRA32.");
+ continue;
+ }
+
+ var size = GenerateAllMipmaps ? srcImage.GetSizeWithMipMaps() : srcImage.GetSize();
+ texture.LoadRawTextureData(srcImage.data, size);
+ texture.Apply();
+ }
+ }
+ }
+
+ ///
+ /// Returns a list of texture outputs that have resized since last render.
+ ///
+ /// Render result.
+ /// List of pair with output ID and new size.
+ public List<(int, Vector2Int)> GetResizedOutputs(IntPtr resultPtr)
+ {
+ List<(int, Vector2Int)> textureSizes = new List<(int, Vector2Int)>();
+
+ unsafe
+ {
+ foreach (var output in Output)
+ {
+ var texture = output.OutputTexture;
+
+ if (texture == null)
+ continue;
+
+ var index = output.VirtualOutputIndex;
+ IntPtr pI = resultPtr + (index * sizeof(NativeData));
+ NativeData data = Marshal.PtrToStructure(pI);
+
+ if (data.ValueType != ValueType.SBSARIO_VALUE_IMAGE)
+ {
+ Debug.LogError($"Results fail for {output.Description.Label}");
+ continue;
+ }
+
+ NativeDataImage imgData = data.Data.ImageData;
+
+ if (texture.width != (int)imgData.width || texture.height != (int)imgData.height)
+ textureSizes.Add((output.Index, new Vector2Int((int)imgData.width, (int)imgData.height)));
+ }
+ }
+
+ return textureSizes;
+ }
+
+ private static bool TryGetUnityTextureFormat(NativeDataImage nativeData, bool runtimeUsage, out int width, out int height, out int imageSize, out TextureFormat format, out int mipsCount)
+ {
+ width = (int)nativeData.width;
+ height = (int)nativeData.height;
+ mipsCount = (int)nativeData.mipmaps;
+
+ imageSize = nativeData.GetSizeWithMipMaps();
+ format = nativeData.image_format.ToUnityFormat();
+
+ if ((nativeData.channel_order == ChannelOrder.SBSARIO_CHANNEL_ORDER_BGRA) && runtimeUsage)
+ format = TextureFormat.BGRA32;
+
+ //#endif
+ return true;
+ }
+
+ ///
+ /// Returns the native ID of this graph in the sbsar file.
+ ///
+ /// Graph native ID.
+ public int GetNativeID()
+ {
+ return Index;
+ }
+
+ ///
+ /// Sets the value for the native index of this graph. (This should only be assigned on object creation based on the values from the sbsar file.)
+ ///
+ public void SetNativeID(int index)
+ {
+ if (Index != -1)
+ throw new ArgumentException("SubstanceGraphSO NativeID should not be changed after it has been assigned.");
+
+ Index = index;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs.meta
new file mode 100644
index 0000000..cd779b7
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Unity Objects/SubstanceGraphSO.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: eed5864476f84ce4b85454db09ca4eaa
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities.meta
new file mode 100644
index 0000000..7aa8427
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f5f7bbbd40ab7444b8dcbbc226d53cbe
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs
new file mode 100644
index 0000000..acdd09a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs
@@ -0,0 +1,139 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Utility class for dynamically import substance plugin.
+ ///
+ internal class DLLHelpers
+ {
+ [DllImport("kernel32", SetLastError = true)]
+ protected static extern IntPtr LoadLibraryW([MarshalAs(UnmanagedType.LPWStr)] string lpFileName);
+
+ [DllImport("kernel32.dll", EntryPoint = "GetProcAddress", SetLastError = true)]
+ protected static extern IntPtr GetProcAddress(IntPtr hModule, string procname);
+
+ [DllImport("kernel32.dll", SetLastError = true)]
+ private static extern bool FreeLibrary(IntPtr hModule);
+
+ [DllImport("libdl")]
+ protected static extern IntPtr dlopen(string filename, int flags);
+
+ [DllImport("libdl")]
+ protected static extern IntPtr dlsym(IntPtr handle, string symbol);
+
+ [DllImport("libdl")]
+ protected static extern IntPtr dlerror();
+
+ [DllImport("libdl")]
+ protected static extern int dlclose(IntPtr handle);
+
+ internal static IntPtr DllHandle = IntPtr.Zero;
+ private static object[] mParams = new object[0];
+
+ internal static object[] GetParams(int size)
+ {
+ Array.Resize(ref mParams, size);
+ return mParams;
+ }
+
+ internal static void LoadDLL(string dllPath)
+ {
+ if (DllHandle == IntPtr.Zero)
+ {
+ if (IsWindows())
+ {
+ var oldWD = System.IO.Directory.GetCurrentDirectory();
+ Directory.SetCurrentDirectory(Path.GetDirectoryName(dllPath));
+
+ DllHandle = LoadLibraryW(dllPath);
+
+ if (DllHandle == IntPtr.Zero)
+ {
+ var error = Marshal.GetLastWin32Error();
+ Debug.LogError($"LoadLibraryW error: {error}");
+ }
+
+ Directory.SetCurrentDirectory(oldWD);
+ }
+ else if (IsMac() || IsLinux())
+ {
+ DllHandle = dlopen(dllPath, 3);
+
+ if (DllHandle == IntPtr.Zero)
+ {
+ IntPtr errorMessage = dlerror();
+ Debug.LogError($"dlerror: {Marshal.PtrToStringAnsi(errorMessage)}");
+ }
+ }
+
+ if (DllHandle == IntPtr.Zero)
+ throw new ArgumentException($"Fail to load substance engine: {dllPath}");
+ }
+ }
+
+ internal static void UnloadDLL()
+ {
+ if (DllHandle != IntPtr.Zero)
+ {
+ if (IsWindows())
+ {
+ FreeLibrary(DllHandle);
+ }
+ else if (IsMac() || IsLinux())
+ {
+ dlclose(DllHandle);
+ }
+
+ DllHandle = IntPtr.Zero;
+ }
+ }
+
+ internal static Delegate GetFunction(string funcname, Type t)
+ {
+ IntPtr ptr = IntPtr.Zero;
+
+ if (DllHandle == IntPtr.Zero)
+ return null;
+
+ if (IsWindows())
+ {
+ ptr = GetProcAddress(DllHandle, funcname);
+ }
+ else if (IsMac() || IsLinux())
+ {
+ ptr = dlsym(DllHandle, funcname);
+ }
+
+ if (ptr == IntPtr.Zero)
+ {
+ return null;
+ }
+
+ return Marshal.GetDelegateForFunctionPointer(ptr, t);
+ }
+
+ private static bool IsWindows()
+ {
+ return (Application.platform == RuntimePlatform.WindowsEditor
+ || Application.platform == RuntimePlatform.WindowsPlayer);
+ }
+
+ private static bool IsMac()
+ {
+ return (Application.platform == RuntimePlatform.OSXEditor
+ || Application.platform == RuntimePlatform.OSXPlayer);
+ }
+
+ private static bool IsLinux()
+ {
+ return (Application.platform == RuntimePlatform.LinuxEditor
+ || Application.platform == RuntimePlatform.LinuxPlayer);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs.meta
new file mode 100644
index 0000000..669ded3
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/DLLHelper.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: f6de90137b2a18d46b64f75e11af9249
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs
new file mode 100644
index 0000000..c92bf63
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs
@@ -0,0 +1,425 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Extensions for handling enum type convertion.
+ ///
+ internal static class Extensions
+ {
+ ///
+ /// Transforms a unity value type enum into an enum used by native code.
+ ///
+ /// Unity enum.
+ /// Native enum.
+ internal static ValueType ToNative(this SubstanceValueType unityType)
+ {
+ switch (unityType)
+ {
+ case SubstanceValueType.Float:
+ return ValueType.SBSARIO_VALUE_FLOAT;
+
+ case SubstanceValueType.Float2:
+ return ValueType.SBSARIO_VALUE_FLOAT2;
+
+ case SubstanceValueType.Float3:
+ return ValueType.SBSARIO_VALUE_FLOAT3;
+
+ case SubstanceValueType.Float4:
+ return ValueType.SBSARIO_VALUE_FLOAT4;
+
+ case SubstanceValueType.Int:
+ return ValueType.SBSARIO_VALUE_INT;
+
+ case SubstanceValueType.Int2:
+ return ValueType.SBSARIO_VALUE_INT2;
+
+ case SubstanceValueType.Int3:
+ return ValueType.SBSARIO_VALUE_INT3;
+
+ case SubstanceValueType.Int4:
+ return ValueType.SBSARIO_VALUE_INT4;
+
+ case SubstanceValueType.Image:
+ return ValueType.SBSARIO_VALUE_IMAGE;
+
+ case SubstanceValueType.String:
+ return ValueType.SBSARIO_VALUE_STRING;
+
+ case SubstanceValueType.Font:
+ return ValueType.SBSARIO_VALUE_FONT;
+
+ default:
+ throw new System.InvalidOperationException($"Value type {unityType} can not be converted to native enum.");
+ }
+ }
+
+ ///
+ /// Transforms a native value type enum into an enum used by the unity plugin.
+ ///
+ /// Native enum.
+ /// Unity enum.
+ internal static SubstanceValueType ToUnity(this ValueType nativeType)
+ {
+ switch (nativeType)
+ {
+ case ValueType.SBSARIO_VALUE_FLOAT:
+ return SubstanceValueType.Float;
+
+ case ValueType.SBSARIO_VALUE_FLOAT2:
+ return SubstanceValueType.Float2;
+
+ case ValueType.SBSARIO_VALUE_FLOAT3:
+ return SubstanceValueType.Float3;
+
+ case ValueType.SBSARIO_VALUE_FLOAT4:
+ return SubstanceValueType.Float4;
+
+ case ValueType.SBSARIO_VALUE_INT:
+ return SubstanceValueType.Int;
+
+ case ValueType.SBSARIO_VALUE_INT2:
+ return SubstanceValueType.Int2;
+
+ case ValueType.SBSARIO_VALUE_INT3:
+ return SubstanceValueType.Int3;
+
+ case ValueType.SBSARIO_VALUE_INT4:
+ return SubstanceValueType.Int4;
+
+ case ValueType.SBSARIO_VALUE_IMAGE:
+ return SubstanceValueType.Image;
+
+ case ValueType.SBSARIO_VALUE_STRING:
+ return SubstanceValueType.String;
+
+ case ValueType.SBSARIO_VALUE_FONT:
+ return SubstanceValueType.Font;
+
+ default:
+ throw new System.InvalidOperationException($"Value type {nativeType} can not be converted to unity enum.");
+ }
+ }
+
+ internal static SubstanceWidgetType ToUnity(this WidgetType nativeType)
+ {
+ switch (nativeType)
+ {
+ case WidgetType.SBSARIO_WIDGET_NOWIDGET:
+ return SubstanceWidgetType.NoWidget;
+
+ case WidgetType.SBSARIO_WIDGET_SLIDER:
+ return SubstanceWidgetType.Slider;
+
+ case WidgetType.SBSARIO_WIDGET_ANGLE:
+ return SubstanceWidgetType.Angle;
+
+ case WidgetType.SBSARIO_WIDGET_COLOR:
+ return SubstanceWidgetType.Color;
+
+ case WidgetType.SBSARIO_WIDGET_TOGGLEBUTTON:
+ return SubstanceWidgetType.ToggleButton;
+
+ case WidgetType.SBSARIO_WIDGET_COMBOBOX:
+ return SubstanceWidgetType.ComboBox;
+
+ case WidgetType.SBSARIO_WIDGET_IMAGE:
+ return SubstanceWidgetType.Image;
+
+ case WidgetType.SBSARIO_WIDGET_POSITION:
+ return SubstanceWidgetType.Position;
+
+ default:
+ throw new System.InvalidOperationException($"Value type {nativeType} can not be converted to unity enum.");
+ }
+ }
+
+ internal static string GetMessage(this ErrorCode code)
+ {
+ switch (code)
+ {
+ case ErrorCode.SBSARIO_ERROR_OK:
+ return "No error has occurred";
+
+ case ErrorCode.SBSARIO_ERROR_STATE:
+ return "Call made with an invalid state";
+
+ case ErrorCode.SBSARIO_ERROR_INVALID:
+ return "An invalid argument was given to the api";
+
+ case ErrorCode.SBSARIO_ERROR_UNKNOWN:
+ return "An unspecified error has occurred";
+
+ case ErrorCode.SBSARIO_ERROR_FAILURE:
+ return "The operation failed to complete";
+
+ default:
+ return "No error has occurred";
+ }
+ }
+
+ public static HVFlip ToSubstance(this TextureFlip flip)
+ {
+ switch (flip)
+ {
+ case TextureFlip.None:
+ return HVFlip.SBSARIO_HVFLIP_NO;
+
+ case TextureFlip.Horizontal:
+ return HVFlip.SBSARIO_HVFLIP_HORIZONTAL;
+
+ case TextureFlip.Vertical:
+ return HVFlip.SBSARIO_HVFLIP_VERTICAL;
+
+ case TextureFlip.Both:
+ return HVFlip.SBSARIO_HVFLIP_BOTH;
+
+ default:
+ throw new System.InvalidOperationException($"Unable to convert {flip} to native enum.");
+ }
+ }
+
+ public static ChannelOrder GetChannelOrder(this TextureFormat unityFormat)
+ {
+ switch (unityFormat)
+ {
+ case TextureFormat.RGB24:
+ case TextureFormat.RGBA32:
+ case TextureFormat.RGBA64:
+ case TextureFormat.RGB48:
+ return ChannelOrder.SBSARIO_CHANNEL_ORDER_RGBA;
+
+ case TextureFormat.BGRA32:
+ return ChannelOrder.SBSARIO_CHANNEL_ORDER_BGRA;
+
+ default:
+ return ChannelOrder.SBSARIO_CHANNEL_ORDER_INVALID;
+ }
+ }
+
+ #region Image Format
+
+ public static ImageFormat ToSubstance(this TextureFormat unityFormat)
+ {
+ switch (unityFormat)
+ {
+ //Byte types.
+ case TextureFormat.BGRA32:
+ case TextureFormat.RGBA32:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_8B | ImageFormat.SBSARIO_IMAGE_FORMAT_RGBA | ImageFormat.SBSARIO_IMAGE_FORMAT_INT;
+
+ case TextureFormat.RGB24:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_8B | ImageFormat.SBSARIO_IMAGE_FORMAT_RGB | ImageFormat.SBSARIO_IMAGE_FORMAT_INT;
+
+ case TextureFormat.R8:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_8B | ImageFormat.SBSARIO_IMAGE_FORMAT_L | ImageFormat.SBSARIO_IMAGE_FORMAT_INT;
+
+ //Short types
+ case TextureFormat.R16:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_16B | ImageFormat.SBSARIO_IMAGE_FORMAT_L | ImageFormat.SBSARIO_IMAGE_FORMAT_INT;
+
+ case TextureFormat.RGBA64:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_16B | ImageFormat.SBSARIO_IMAGE_FORMAT_RGBA | ImageFormat.SBSARIO_IMAGE_FORMAT_INT;
+
+ //Float types
+ case TextureFormat.RGBAFloat:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_32B | ImageFormat.SBSARIO_IMAGE_FORMAT_RGBA | ImageFormat.SBSARIO_IMAGE_FORMAT_FLOAT;
+
+ case TextureFormat.RFloat:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_32B | ImageFormat.SBSARIO_IMAGE_FORMAT_L | ImageFormat.SBSARIO_IMAGE_FORMAT_FLOAT;
+
+ //Half types
+ case TextureFormat.RGBAHalf:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_16B | ImageFormat.SBSARIO_IMAGE_FORMAT_RGBA | ImageFormat.SBSARIO_IMAGE_FORMAT_FLOAT;
+
+ case TextureFormat.RHalf:
+ return ImageFormat.SBSARIO_IMAGE_FORMAT_16B | ImageFormat.SBSARIO_IMAGE_FORMAT_L | ImageFormat.SBSARIO_IMAGE_FORMAT_FLOAT;
+
+ default:
+ throw new ArgumentException($"Texture format {unityFormat} not supported.");
+ }
+ }
+
+ ///
+ /// Convert Substance Texture Format to Unity Texture Format
+ ///
+ internal static TextureFormat ToUnityFormat(this ImageFormat imageFormat)
+ {
+ var channelCount = ChannelCount(imageFormat);
+ var bytesPerChannel = GetBytesPerChannel(imageFormat);
+
+ if (imageFormat.HasMask(ImageFormat.SBSARIO_IMAGE_FORMAT_FLOAT))
+ {
+ if (channelCount == 1)
+ {
+ if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RHalf;
+ }
+ else if (bytesPerChannel == 4)
+ {
+ return TextureFormat.RFloat;
+ }
+ }
+ else if (channelCount == 2)
+ {
+ if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RGHalf;
+ }
+ else if (bytesPerChannel == 4)
+ {
+ return TextureFormat.RGFloat;
+ }
+ }
+ else if (channelCount == 4)
+ {
+ if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RGBAHalf;
+ }
+ else if (bytesPerChannel == 4)
+ {
+ return TextureFormat.RGBAFloat;
+ }
+ }
+ }
+ else
+ {
+ if (channelCount == 1)
+ {
+ if (bytesPerChannel == 1)
+ {
+ return TextureFormat.R8;
+ }
+ else if (bytesPerChannel == 2)
+ {
+ return TextureFormat.R16;
+ }
+ }
+ else if (channelCount == 2)
+ {
+ if (bytesPerChannel == 1)
+ {
+ return TextureFormat.RG16;
+ }
+ else if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RG32;
+ }
+ }
+ else if (channelCount == 3)
+ {
+ if (bytesPerChannel == 1)
+ {
+ return TextureFormat.RGB24;
+ }
+ else if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RGB48;
+ }
+ }
+ else if (channelCount == 4)
+ {
+ if (bytesPerChannel == 1)
+ {
+ return TextureFormat.RGBA32;
+ }
+ else if (bytesPerChannel == 2)
+ {
+ return TextureFormat.RGBA64;
+ }
+ }
+ }
+
+ Debug.LogError($"Not supported image format with channel count = {channelCount} and bytes per channel = {bytesPerChannel}");
+ throw new FormatException();
+ }
+
+ internal static int GetSizeWithMipMaps(this NativeDataImage imageData)
+ {
+ int width = (int)imageData.width;
+ int height = (int)imageData.height;
+ int mipCount = (int)imageData.mipmaps;
+ ImageFormat imageFormat = imageData.image_format;
+
+ var bytesPerPixel = GetBytesPerChannel(imageFormat) * ChannelCount(imageFormat);
+
+ if (width == 0 || height == 0)
+ return 0;
+
+ int size = 0;
+ for (int i = 0; i < mipCount; i++)
+ {
+ size += width * height * bytesPerPixel;
+ width >>= 1;
+ height >>= 1;
+
+ if (width < 1) width = 1;
+ if (height < 1) height = 1;
+ }
+
+ return size;
+ }
+
+ internal static int GetSize(this NativeDataImage imageData)
+ {
+ int width = (int)imageData.width;
+ int height = (int)imageData.height;
+ ImageFormat imageFormat = imageData.image_format;
+
+ if (width <= 0 || height <= 0)
+ return 0;
+
+ var bytesPerPixel = GetBytesPerChannel(imageFormat) * ChannelCount(imageFormat);
+ return width * height * bytesPerPixel;
+ }
+
+ internal static int GetBytesPerChannel(this ImageFormat imageFormat)
+ {
+ switch (imageFormat & ImageFormat.SBSARIO_IMAGE_FORMAT_BITDEPTH_MASK)
+ {
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_32B:
+ return 4;
+
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_16B:
+ return 2;
+
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_8B:
+ return 1;
+
+ default:
+ return 1;
+ }
+ }
+
+ internal static int ChannelCount(this ImageFormat imageFormat)
+ {
+ switch (imageFormat & ImageFormat.SBSARIO_IMAGE_FORMAT_CHANNELS_MASK)
+ {
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_RGBA:
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_RGBX:
+ return 4;
+
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_RGB:
+ return 3;
+
+ case ImageFormat.SBSARIO_IMAGE_FORMAT_L:
+ return 1;
+
+ default:
+ return 4;
+ }
+ }
+
+ private static bool HasMask(this ImageFormat imageFormat, ImageFormat mask)
+ {
+ return ((imageFormat & mask) != 0);
+ }
+
+ #endregion Image Format
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs.meta
new file mode 100644
index 0000000..a1d04a9
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/EnumExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 9c5e4a2f5172f424faa88416d0c6d9e1
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs
new file mode 100644
index 0000000..d46d48e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs
@@ -0,0 +1,26 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public static class Globals
+ {
+ public static Texture2D CreateColoredTexture(int pWidth, int pHeight, Color pColor)
+ {
+ Texture2D t;
+ Color[] pix = new Color[pWidth * pHeight];
+
+ for (int i = 0; i < pix.Length; i++)
+ {
+ pix[i] = pColor;
+ }
+
+ t = new Texture2D(pWidth, pHeight);
+ t.SetPixels(pix);
+ t.Apply();
+
+ return t;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs.meta
new file mode 100644
index 0000000..e25d989
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Globals.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0e4a1c6b6e4f9724c81d3a821a8642b9
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs
new file mode 100644
index 0000000..3e6026a
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs
@@ -0,0 +1,396 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public static class MaterialUtils
+ {
+ ///
+ /// Default shader for the HDRP pipeline.
+ ///
+ private const string HDRPShaderName = "HDRP/Lit";
+
+ ///
+ /// Default shader for the URP pipeline.
+ ///
+ private const string URPShaderName = "Universal Render Pipeline/Lit";
+
+ ///
+ /// Default shader for the Standard unity render pipeline.
+ ///
+ private const string StandardShaderName = "Standard";
+
+ ///
+ /// Table for converting substance output names to textures inputs in HDRP shaders.
+ ///
+ private static readonly IReadOnlyDictionary HDRPOutputTable = new Dictionary()
+ {
+ { "basecolor", "_BaseColorMap"},
+ { "diffuse", "_BaseColorMap" },
+ { "mask", "_MaskMap" },
+ { "normal", "_NormalMap" },
+ { "height", "_HeightMap" },
+ { "emissive", "_EmissiveColorMap" },
+ { "specular", "_SpecularColorMap" },
+ { "detailMask", "_DetailMask" },
+ { "opacity", "_OpacityMap" },
+ { "glossiness", "_GlossinessMap" },
+ { "ambientocclusion", "_OcclusionMap" },
+ { "metallic", "_MetallicGlossMap" },
+ { "roughness", "_RoughnessMap" }
+ };
+
+ ///
+ /// Table for converting substance output names to textures inputs in URP shaders.
+ ///
+ private static readonly IReadOnlyDictionary URPOutputTable = new Dictionary()
+ {
+ { "basecolor" , "_BaseMap" },
+ { "diffuse", "_BaseMap" },
+ { "normal" , "_BumpMap" },
+ { "height" ,"_ParallaxMap" },
+ { "emissive" , "_EmissionMap" },
+ { "specular" , "_SpecGlossMap" },
+ { "ambientocclusion" , "_OcclusionMap" },
+ { "metallic" , "_MetallicGlossMap" },
+ { "mask" , "_MaskMap" },
+ { "detailMask" , "_DetailMask" },
+ { "opacity" ,"_OpacityMap" },
+ { "glossiness" ,"_GlossinessMap" },
+ { "roughness" ,"_RoughnessMap" }
+ };
+
+ ///
+ /// Table for converting substance output names to textures inputs in unity Standard pipeline shaders.
+ ///
+ private static readonly IReadOnlyDictionary StandardOutputTable = new Dictionary()
+ {
+ { "basecolor", "_MainTex" },
+ { "diffuse", "_MainTex" },
+ { "normal" , "_BumpMap" },
+ { "height" ,"_ParallaxMap" },
+ { "emissive" ,"_EmissionMap" },
+ { "specular" ,"_SpecGlossMap" },
+ { "specularlevel" ,"_SpecularLevelMap" },
+ { "opacity", "_OpacityMap" },
+ { "glossiness" ,"_GlossinessMap" },
+ { "ambientocclusion" ,"_OcclusionMap" },
+ { "detailmask" ,"_DetailMask" },
+ { "metallic" ,"_MetallicGlossMap" },
+ { "roughness" ,"_RoughnessMap" }
+ };
+
+ private static IReadOnlyDictionary GetTextureMappingDictionary()
+ {
+ if (PluginPipelines.IsHDRP())
+ return HDRPOutputTable;
+
+ if (PluginPipelines.IsURP())
+ return URPOutputTable; // for now
+
+ return StandardOutputTable;
+ }
+
+ public static void AssignOutputTexturesToMaterial(SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ if (output.OutputTexture == null)
+ continue;
+
+ Texture2D texture = output.OutputTexture;
+ var shaderTextureName = output.MaterialTextureTarget;
+ EnableShaderKeywords(graph.OutputMaterial, shaderTextureName);
+ graph.OutputMaterial.SetTexture(shaderTextureName, texture);
+ }
+
+ var smoothnessChannel = GetSmoothnessChannelAssignment(graph);
+ graph.OutputMaterial.SetInt("_SmoothnessTextureChannel", smoothnessChannel);
+ graph.OutputMaterial.SetFloat("_Glossiness", 1.0f);
+ graph.OutputMaterial.SetFloat("_Smoothness", 1.0f);
+ graph.OutputMaterial.SetFloat("_OcclusionStrength", 1.0f);
+
+ var opacityOutput = graph.Output.FirstOrDefault(a => a.IsOpacity());
+ }
+
+ public static string GetUnityTextureName(SubstanceOutputDescription description)
+ {
+ var dictionary = GetTextureMappingDictionary();
+
+ if (dictionary.TryGetValue(description.Channel.ToLower(), out string result))
+ return result;
+
+ return string.Empty;
+ }
+
+ private static void EnableShaderKeywords(Material material, string shaderTextureName)
+ {
+ if (shaderTextureName == "_BumpMap")
+ {
+ material.EnableKeyword("_NORMALMAP");
+ }
+ else if (shaderTextureName == "_EmissionMap")
+ {
+ // Enables emission for the material, and make the material use
+ // realtime emission.
+ material.EnableKeyword("_EMISSION");
+ material.globalIlluminationFlags = MaterialGlobalIlluminationFlags.RealtimeEmissive;
+
+ // Update the emission color and intensity of the material.
+ material.SetColor("_EmissionColor", Color.white);
+
+ // Inform Unity's GI system to recalculate GI based on the new emission map.
+ DynamicGI.UpdateEnvironment();
+ }
+ else if (shaderTextureName == "_ParallaxMap")
+ {
+ material.EnableKeyword("_PARALLAXMAP");
+ }
+ else if (shaderTextureName == "_MetallicGlossMap")
+ {
+ if (PluginPipelines.IsURP())
+ material.EnableKeyword("_METALLICSPECGLOSSMAP");
+ else
+ material.EnableKeyword("_METALLICGLOSSMAP");
+ }
+ }
+
+ ///
+ /// Returns 1 if smoothness is assigned to _MainTex alpha channel and 0 if it is assigned to metallic map alpha channel.
+ ///
+ /// Target substance graph.
+ /// 0 or 1 depending on the smoothness channel assignment.
+ private static int GetSmoothnessChannelAssignment(SubstanceGraphSO graph)
+ {
+ var baseColorOutput = graph.Output.FirstOrDefault(a => a.IsBaseColor());
+
+ //Check if smoothness is assigned to baseColor.
+ if (baseColorOutput != null)
+ if (baseColorOutput.AlphaChannel == "roughness" || baseColorOutput.AlphaChannel == "glossiness")
+ return 1;
+
+ //Check if smoothness is assigned to diffuse.
+ var diffuseOutput = graph.Output.FirstOrDefault(a => a.IsDiffuse());
+
+ if (diffuseOutput != null)
+ if (diffuseOutput.AlphaChannel == "roughness" || diffuseOutput.AlphaChannel == "glossiness")
+ return 1;
+
+ //Assumes it is assinged to metallic map.
+ return 0;
+ }
+
+ public static bool CheckIfStandardOutput(SubstanceOutputDescription description)
+ {
+ if (PluginPipelines.IsHDRP())
+ {
+ return CheckIfHRPStandardOutput(description);
+ }
+ else if (PluginPipelines.IsURP())
+ {
+ return CheckIfURPStandardOutput(description);
+ }
+
+ //Unity Standard render pipeline.
+ return CheckIfStandardPipelineOutput(description);
+ }
+
+ private static bool CheckIfURPStandardOutput(SubstanceOutputDescription description)
+ {
+ if (description == null)
+ return false;
+
+ if (string.IsNullOrEmpty(description.Channel))
+ return false;
+
+ if (string.Equals(description.Channel, "baseColor", StringComparison.OrdinalIgnoreCase)
+ || string.Equals(description.Channel, "diffuse", StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
+
+ if (!URPOutputTable.TryGetValue(description.Channel, out string shaderValue))
+ return false;
+
+ var material = new Material(GetStandardShader());
+ return material.HasProperty(shaderValue);
+ }
+
+ private static bool CheckIfHRPStandardOutput(SubstanceOutputDescription description)
+ {
+ if (description == null)
+ return false;
+
+ if (string.IsNullOrEmpty(description.Channel))
+ return false;
+
+ switch (description.Channel)
+ {
+ case "baseColor":
+ return true;
+
+ case "normal":
+ return true;
+
+ case "mask":
+ return true;
+
+ case "height":
+ return true;
+
+ case "emissive":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ private static bool CheckIfStandardPipelineOutput(SubstanceOutputDescription description)
+ {
+ if (description == null)
+ return false;
+
+ if (string.IsNullOrEmpty(description.Channel))
+ return false;
+
+ var channel = description.Channel.ToLower();
+
+ if ("basecolor" == channel)
+ return true;
+
+ if (!StandardOutputTable.TryGetValue(channel, out string shaderValue))
+ return false;
+
+ var material = new Material(GetStandardShader());
+ return material.HasProperty(shaderValue);
+ }
+
+ public static Shader GetStandardShader()
+ {
+ if (PluginPipelines.IsHDRP())
+ return Shader.Find(HDRPShaderName);
+ else if (PluginPipelines.IsURP())
+ return Shader.Find(URPShaderName);
+
+ return Shader.Find(StandardShaderName);
+ }
+
+ public static bool CheckIfBGRA(SubstanceOutputDescription description)
+ {
+ if (Application.platform == RuntimePlatform.WindowsEditor
+ || Application.platform == RuntimePlatform.WindowsPlayer)
+ {
+ return false;
+ }
+
+ if (Application.platform == RuntimePlatform.OSXEditor
+ || Application.platform == RuntimePlatform.OSXPlayer)
+ {
+ return false;
+ }
+
+ switch (description.Channel)
+ {
+ case "baseColor":
+ case "diffuse":
+ case "emissive":
+ case "normal":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ #region PhysicalSize
+
+ public static void ApplyPhysicalSize(Material material, Vector3 physicalSize, bool enablePhysicalSize)
+ {
+ if (PluginPipelines.IsHDRP())
+ ApplyPhysicalSizeHDRP(material, physicalSize, enablePhysicalSize);
+ }
+
+ public static Vector3 GetPhysicalSizePositionOffset(Material material)
+ {
+ if (PluginPipelines.IsHDRP())
+ return GetPhysicalSizePositionOffsetHDRP(material);
+
+ return new Vector3(0, 0, 0);
+ }
+
+ public static void SetPhysicalSizePositionOffset(Material material, Vector3 offset)
+ {
+ if (PluginPipelines.IsHDRP())
+ SetPhysicalSizePositionOffsetHDRP(material, offset);
+ }
+
+ private static void ApplyPhysicalSizeHDRP(Material material, Vector3 physicalSize, bool enablePhysicalSize)
+ {
+ if (enablePhysicalSize)
+ {
+ material.SetFloat("_UVBase", 5);
+ material.SetFloat("_UVEmissive", 5);
+ material.SetFloat("_TexWorldScale", 100);
+ material.EnableKeyword("_MAPPING_PLANAR");
+ material.EnableKeyword("_EMISSIVE_MAPPING_TRIPLANAR");
+ material.mainTextureScale = new Vector2(1f / physicalSize.x, 1f / physicalSize.y);
+ }
+ else
+ {
+ material.SetFloat("_UVBase", 0);
+ material.SetFloat("_UVEmissive", 0);
+ material.SetFloat("_TexWorldScale", 1);
+ material.DisableKeyword("_MAPPING_PLANAR");
+ material.DisableKeyword("_EMISSIVE_MAPPING_TRIPLANAR");
+ material.mainTextureScale = new Vector2(1, 1);
+ }
+ }
+
+ public static Vector3 GetPhysicalSizePositionOffsetHDRP(Material material)
+ {
+ return material.GetTextureOffset("_BaseColorMap");
+ }
+
+ public static void SetPhysicalSizePositionOffsetHDRP(Material material, Vector3 offset)
+ {
+ material.SetTextureOffset("_BaseColorMap", offset);
+ material.SetTextureOffset("_EmissiveColorMap", offset);
+ }
+
+ #endregion PhysicalSize
+
+ #region Live output assignment
+
+ public static void UpdateTextureTarget(Material material, Texture2D texture, string oldstring, string newString)
+ {
+ material.SetTexture(oldstring, null);
+
+ if (!string.IsNullOrEmpty(newString))
+ material.SetTexture(newString, texture);
+ }
+
+ public static void EnableEmissionIfAssigned(Material material)
+ {
+ var emissionTextureName = GetTextureMappingDictionary()["emissive"];
+
+ if (material.GetTexture(emissionTextureName) != null)
+ {
+ material.EnableKeyword("_EMISSION");
+ material.globalIlluminationFlags = MaterialGlobalIlluminationFlags.RealtimeEmissive;
+ material.SetColor("_EmissionColor", Color.white);
+ }
+ else
+ {
+ material.DisableKeyword("_EMISSION");
+ material.globalIlluminationFlags = MaterialGlobalIlluminationFlags.EmissiveIsBlack;
+ material.SetColor("_EmissionColor", Color.black);
+ }
+ }
+
+ #endregion Live output assignment
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs.meta
new file mode 100644
index 0000000..fa51f13
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/MaterialUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 827772ab50908334dbe1a1d6330de2db
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs
new file mode 100644
index 0000000..df8804e
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs
@@ -0,0 +1,9 @@
+namespace Adobe.Substance
+{
+ public static class PathUtils
+ {
+ public const string SubstanceRootPath = "Assets/Adobe/Substance3DForUnity/";
+
+ public const bool UsingPackageManager = true;
+ }
+}
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs.meta
new file mode 100644
index 0000000..5e816c2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PathUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 42ae3f27cd9a68f4d870bfd4359d9c2b
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs
new file mode 100644
index 0000000..f2a4e53
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs
@@ -0,0 +1,129 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEditor;
+using UnityEngine;
+using UnityEngine.Rendering;
+using System;
+using System.IO;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Utility functions for platform specific setup.
+ ///
+ public static class PlatformUtils
+ {
+ public static bool IsCPU()
+ {
+ if (Application.platform == RuntimePlatform.OSXPlayer ||
+#if UNITY_2021_3_OR_NEWER
+ Application.platform == RuntimePlatform.OSXServer ||
+#endif
+ Application.platform == RuntimePlatform.OSXEditor)
+ {
+ return false;
+ }
+ else if (Application.platform == RuntimePlatform.LinuxPlayer ||
+#if UNITY_2021_3_OR_NEWER
+ Application.platform == RuntimePlatform.LinuxServer ||
+#endif
+ Application.platform == RuntimePlatform.LinuxEditor)
+ {
+ return false;
+ }
+ else if (Application.platform == RuntimePlatform.WindowsPlayer ||
+#if UNITY_2021_3_OR_NEWER
+ Application.platform == RuntimePlatform.WindowsServer ||
+#endif
+ Application.platform == RuntimePlatform.WindowsEditor)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ ///
+ /// Get full path to the appropriate substance engine based on the current graphics API.
+ ///
+ /// Path to the substance engine.
+ public static string GetEnginePath()
+ {
+ var engineName = GetEngineName();
+ return GetPluginLibraryPath(engineName);
+ }
+
+ ///
+ /// Get the path to the substance plugin (Only used when plugin is dynamically loaded).
+ ///
+ /// Path to the unity plugin.
+ public static string GetPluginPath()
+ {
+ var pluginName = GetPluginName();
+ return GetPluginLibraryPath(pluginName);
+ }
+
+ private static string GetPluginLibraryPath(string libraryName)
+ {
+#if UNITY_EDITOR
+ var path = $"{PathUtils.SubstanceRootPath}/Runtime/Plugins/{libraryName}";
+ return Path.GetFullPath(path);
+#elif UNITY_STANDALONE_WIN
+ return Path.Combine(Path.Combine(Path.Combine(Application.dataPath, "Plugins"), "x86_64"), libraryName);
+#elif UNITY_EDITOR_OSX
+ return Path.Combine(Path.Combine(Application.dataPath, "PlugIns"), libraryName);
+#else
+ return Path.Combine(Path.Combine(Application.dataPath, "Plugins"), libraryName);
+#endif
+ }
+
+ ///
+ /// Get engine library name.
+ ///
+ /// Substance engien name.
+ private static string GetEngineName()
+ {
+ if (Application.platform == RuntimePlatform.LinuxEditor
+ || Application.platform == RuntimePlatform.LinuxPlayer)
+ {
+ return "libsubstance_ogl3_blend.so";
+ }
+ else if (Application.platform == RuntimePlatform.OSXEditor
+ || Application.platform == RuntimePlatform.OSXPlayer)
+ {
+ return "libsubstance_mtl_blend.dylib";
+ }
+ else if (Application.platform == RuntimePlatform.WindowsEditor
+ || Application.platform == RuntimePlatform.WindowsPlayer)
+ {
+ return "substance_d3d11pc_blend.dll";
+ }
+ else
+ {
+ return string.Empty;
+ }
+ }
+
+ private static string GetPluginName()
+ {
+ switch (Application.platform)
+ {
+ case RuntimePlatform.OSXEditor:
+ case RuntimePlatform.OSXPlayer:
+ return "libsbsario.dylib";
+
+ case RuntimePlatform.LinuxPlayer:
+ case RuntimePlatform.LinuxEditor:
+ return "libsbsario.so";
+
+ case RuntimePlatform.WindowsPlayer:
+ case RuntimePlatform.WindowsEditor:
+ return "sbsario.dll";
+
+ default:
+ return string.Empty;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs.meta
new file mode 100644
index 0000000..3c7ac4f
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/PlatformUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 82fc31b1374aa6240bac67b4a6b6ac33
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs
new file mode 100644
index 0000000..a535f7d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs
@@ -0,0 +1,240 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public static class RenderingUtils
+ {
+ public static void ConfigureOutputTextures(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph, bool runtimeUsage = false)
+ {
+ if (PluginPipelines.IsDEFAULT() || PluginPipelines.IsURP())
+ {
+ AssignSmoothnessToAlpha(nativeGraph, graph);
+ }
+ if (PluginPipelines.IsHDRP())
+ {
+ CreateHDRPMaskMap(nativeGraph, graph);
+ }
+
+ AssignOpacityToAlpha(nativeGraph, graph);
+ CreateOutputVirtualCopies(nativeGraph, graph);
+
+ if (!runtimeUsage)
+ ChangeRBChannel(nativeGraph, graph);
+
+ //For some reason we have to call it twice. (Bug in the substance engine?)
+ UpdateAlphaChannelsAssignment(nativeGraph, graph);
+ UpdateAlphaChannelsAssignment(nativeGraph, graph);
+ }
+
+ public static void UpdateAlphaChannelsAssignment(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ var outputID = output.Index;
+ var targetIndex = output.Description.Index;
+ var invert = output.InvertAssignedAlpha;
+ var outputCopy = output.VirtualOutputIndex;
+
+ if (output.IsAlphaAssignable && string.IsNullOrEmpty(output.AlphaChannel))
+ {
+ nativeGraph.ResetAlphaChannelAssignment(outputCopy);
+ continue;
+ }
+
+ var alphaTarget = graph.Output.FirstOrDefault(a => a.Description.Label == output.AlphaChannel);
+
+ if (alphaTarget != null)
+ {
+ var alphaSourceIndex = alphaTarget.Description.Index;
+ nativeGraph.AssignOutputToAlphaChannel(outputCopy, alphaSourceIndex, invert);
+ }
+ }
+ }
+
+ private static void AssignOpacityToAlpha(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph)
+ {
+ var opacityOutput = graph.Output.FirstOrDefault(a => a.IsOpacity());
+
+ if (opacityOutput == null)
+ return;
+
+ var baseColorOutput = graph.Output.FirstOrDefault(a => a.IsBaseColor());
+ var diffuseOutput = graph.Output.FirstOrDefault(a => a.IsDiffuse());
+
+ if (baseColorOutput != null)
+ {
+ if (string.IsNullOrEmpty(baseColorOutput.AlphaChannel))
+ {
+ baseColorOutput.AlphaChannel = opacityOutput.Description.Label;
+ baseColorOutput.InvertAssignedAlpha = false;
+ }
+ }
+
+ if (diffuseOutput != null)
+ {
+ if (string.IsNullOrEmpty(diffuseOutput.AlphaChannel))
+ {
+ diffuseOutput.AlphaChannel = opacityOutput.Description.Label;
+ diffuseOutput.InvertAssignedAlpha = false;
+ }
+ }
+ }
+
+ private static void AssignSmoothnessToAlpha(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph)
+ {
+ var roughtnessOutput = graph.Output.FirstOrDefault(a => a.IsRoughness());
+ var metallicOutput = graph.Output.FirstOrDefault(a => a.IsMetallicness());
+ var diffuseOutput = graph.Output.FirstOrDefault(a => a.IsDiffuse());
+ var baseColorOutput = graph.Output.FirstOrDefault(a => a.IsBaseColor());
+ var specularOutput = graph.Output.FirstOrDefault(a => a.IsSpecular());
+
+ if (roughtnessOutput != null && (metallicOutput != null || specularOutput != null))
+ {
+ if (metallicOutput != null)
+ {
+ if (string.IsNullOrEmpty(metallicOutput.AlphaChannel))
+ {
+ metallicOutput.AlphaChannel = roughtnessOutput.Description.Label;
+ metallicOutput.InvertAssignedAlpha = true;
+ }
+ }
+
+ if (specularOutput != null)
+ {
+ if (string.IsNullOrEmpty(specularOutput.AlphaChannel))
+ {
+ specularOutput.AlphaChannel = roughtnessOutput.Description.Label;
+ specularOutput.InvertAssignedAlpha = true;
+ }
+ }
+ }
+ else if (roughtnessOutput != null && baseColorOutput != null)
+ {
+ if (string.IsNullOrEmpty(baseColorOutput.AlphaChannel))
+ {
+ baseColorOutput.AlphaChannel = roughtnessOutput.Description.Label;
+ baseColorOutput.InvertAssignedAlpha = true;
+ }
+ }
+ else if (roughtnessOutput != null && diffuseOutput != null)
+ {
+ if (string.IsNullOrEmpty(diffuseOutput.AlphaChannel))
+ {
+ diffuseOutput.AlphaChannel = roughtnessOutput.Description.Label;
+ diffuseOutput.InvertAssignedAlpha = true;
+ }
+ }
+ }
+
+ private static void CreateOutputVirtualCopies(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ if (output.IsVirtual)
+ continue;
+
+ var outputIndex = output.Index;
+ var newIndex = nativeGraph.CreateOutputCopy(outputIndex);
+ output.VirtualOutputIndex = newIndex;
+ }
+ }
+
+ private static void CreateHDRPMaskMap(SubstanceNativeGraph nativeGraph, SubstanceGraphSO graph)
+ {
+ uint flags = 0;
+
+ //Red = Metallic
+ var metallicnessOutput = graph.Output.FirstOrDefault(a => a.IsMetallicness());
+
+ var outputChannel0Info = SubstanceVirtualOutputChannelInfo.Black;
+ var outputChannel1Info = SubstanceVirtualOutputChannelInfo.Black;
+ var outputChannel2Info = SubstanceVirtualOutputChannelInfo.Black;
+ var outputChannel3Info = SubstanceVirtualOutputChannelInfo.Black;
+
+ if (metallicnessOutput != null)
+ {
+ var mettalicnessOutputUID = nativeGraph.GetOutputUID(metallicnessOutput.Index);
+ outputChannel0Info = new SubstanceVirtualOutputChannelInfo(mettalicnessOutputUID);
+ }
+
+ //Green = Occlusion
+ var occlusionOutput = graph.Output.FirstOrDefault(a => a.IsOcclusion());
+
+ if (occlusionOutput != null)
+ {
+ var occlusionOutputUID = nativeGraph.GetOutputUID(occlusionOutput.Index);
+ outputChannel1Info = new SubstanceVirtualOutputChannelInfo(occlusionOutputUID);
+ }
+ else
+ {
+ flags += 2;
+ }
+
+ //Blue = Detail mask
+ var detailOutput = graph.Output.FirstOrDefault(a => a.IsDetail());
+
+ if (detailOutput != null)
+ {
+ var detailOutputUID = nativeGraph.GetOutputUID(detailOutput.Index);
+ outputChannel2Info = new SubstanceVirtualOutputChannelInfo(detailOutputUID);
+ }
+ else
+ {
+ flags += 4;
+ }
+
+ //Alpha = Smoothness (1 - roughness)
+ var roughnessOutput = graph.Output.FirstOrDefault(a => a.IsRoughness());
+
+ if (roughnessOutput != null)
+ {
+ var roughnessOutputUID = nativeGraph.GetOutputUID(roughnessOutput.Index);
+ outputChannel3Info = new SubstanceVirtualOutputChannelInfo(roughnessOutputUID, ShuffleIndex.Red, true);
+ }
+
+ var outputCreateInfo = new SubstanceVirtualOutputCreateInfo(TextureFormat.RGBA32,
+ "mask",
+ TextureFlip.Vertical,
+ outputChannel0Info,
+ outputChannel1Info,
+ outputChannel2Info,
+ outputChannel3Info);
+
+ var hdrpMaskOutputDescription = nativeGraph.CreateVirtualOutput(outputCreateInfo);
+
+ var hdrpMaskOutput = graph.Output.FirstOrDefault(a => a.IsHDRPMask());
+
+ if (hdrpMaskOutput == null)
+ {
+ hdrpMaskOutput = new SubstanceOutputTexture(hdrpMaskOutputDescription, "_MaskMap")
+ {
+ IsVirtual = true,
+ IsAlphaAssignable = false,
+ VirtualOutputIndex = hdrpMaskOutputDescription.Index
+ };
+
+ graph.Output.Add(hdrpMaskOutput);
+ }
+ else
+ {
+ hdrpMaskOutput.Description = hdrpMaskOutputDescription;
+ }
+
+ hdrpMaskOutput.Description.Channel = "mask";
+ hdrpMaskOutput.Flags = flags;
+ }
+
+ private static void ChangeRBChannel(SubstanceNativeGraph fileHandler, SubstanceGraphSO graph)
+ {
+ foreach (var output in graph.Output)
+ {
+ if (MaterialUtils.CheckIfBGRA(output.Description))
+ fileHandler.ChangeOutputRBChannels(output.VirtualOutputIndex);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs.meta
new file mode 100644
index 0000000..07cefe6
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/RenderingUtils.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5abbd1d56696db6478aa75a922351727
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs
new file mode 100644
index 0000000..33b8cb2
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Runtime.InteropServices;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ ///
+ /// Provides utility extensions to copy data from substance to unity textures.
+ ///
+ internal static class TextureExtensions
+ {
+ internal static byte[] Color32ArrayToByteArray(Color32[] colors)
+ {
+ if (colors == null || colors.Length == 0)
+ return null;
+
+ int length = Marshal.SizeOf(typeof(Color32)) * colors.Length;
+ byte[] bytes = new byte[length];
+
+ GCHandle handle = default(GCHandle);
+ try
+ {
+ handle = GCHandle.Alloc(colors, GCHandleType.Pinned);
+ IntPtr ptr = handle.AddrOfPinnedObject();
+ Marshal.Copy(ptr, bytes, 0, length);
+ }
+ finally
+ {
+ if (handle != default(GCHandle))
+ handle.Free();
+ }
+
+ return bytes;
+ }
+
+ internal static Color32[] FlipY(Color32[] input, int width, int height)
+ {
+ Color32[] output = new Color32[input.Length];
+
+ for (int y = 0, i = 0, o = output.Length - width; y < height; y++, i += width, o -= width)
+ Array.Copy(input, i, output, o, width);
+
+ return output;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs.meta
new file mode 100644
index 0000000..cc4c589
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 17a6348e48c5de84498a4c2ad3caff6d
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs
new file mode 100644
index 0000000..603f59d
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs
@@ -0,0 +1,95 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Adobe.Substance
+{
+ public static class TextureOutputExtensions
+ {
+ public static bool IsDiffuse(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "diffuse");
+ }
+
+ public static bool IsNormalMap(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "normal");
+ }
+
+ public static bool IsBaseColor(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "basecolor");
+ }
+
+ public static bool IsRoughness(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "roughness");
+ }
+
+ public static bool IsOpacity(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "opacity");
+ }
+
+ public static bool IsHightMap(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "height");
+ }
+
+ public static bool IsMetallicness(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "metallic");
+ }
+
+ public static bool IsSpecular(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "specular");
+ }
+
+ public static bool IsOcclusion(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "ambientocclusion");
+ }
+
+ public static bool IsEmissive(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "emissive");
+ }
+
+ public static bool IsDetail(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "detailmask");
+ }
+
+ public static bool IsHDRPMask(this SubstanceOutputTexture output)
+ {
+ return CheckChannelName(output, "mask");
+ }
+
+ private static bool CheckChannelName(SubstanceOutputTexture output, string channelName)
+ {
+ var label = output.Description.Channel;
+ return string.Equals(label, channelName, System.StringComparison.OrdinalIgnoreCase);
+ }
+
+ public static bool IsStandardOutput(this SubstanceOutputTexture output, Material material)
+ {
+ if (string.IsNullOrEmpty(output.MaterialTextureTarget))
+ return false;
+
+ if (material == null)
+ return output.IsStandardOutput();
+
+#if UNITY_2021_1_OR_NEWER
+ return material.HasTexture(output.MaterialTextureTarget);
+#else
+ return material.HasProperty(output.MaterialTextureTarget);
+#endif
+ }
+
+ public static bool IsStandardOutput(this SubstanceOutputTexture output)
+ {
+ return MaterialUtils.CheckIfStandardOutput(output.Description);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs.meta
new file mode 100644
index 0000000..ec4f149
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/TextureOutputExtensions.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 603e384ac1d32cc469fcb01910e701ce
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs
new file mode 100644
index 0000000..1fd61ce
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs
@@ -0,0 +1,9 @@
+namespace Adobe.Substance
+{
+ public static class Version
+ {
+ public const string PluginVersion = "3.6.0-5-gfab1c7f";
+ public const string EngineVersion = "8.2.0 0138644d";
+ public const int ImporterVersion = 360;
+ }
+}
diff --git a/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs.meta b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs.meta
new file mode 100644
index 0000000..2d8c392
--- /dev/null
+++ b/Assets/Adobe/Substance3DForUnity/Runtime/Scripts/Utilities/Version.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 62d136a2c8fa01b4eb83bb3320de89af
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller b/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller
new file mode 100644
index 0000000..921748f
--- /dev/null
+++ b/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller
@@ -0,0 +1,72 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-5744946933741941833
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: New State
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: 995daa6cc74179043b8b31348a750c1e, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!91 &9100000
+AnimatorController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: MainMenuPlayerAnim
+ serializedVersion: 5
+ m_AnimatorParameters: []
+ m_AnimatorLayers:
+ - serializedVersion: 5
+ m_Name: Base Layer
+ m_StateMachine: {fileID: 4045619364918543526}
+ m_Mask: {fileID: 0}
+ m_Motions: []
+ m_Behaviours: []
+ m_BlendingMode: 0
+ m_SyncedLayerIndex: -1
+ m_DefaultWeight: 0
+ m_IKPass: 0
+ m_SyncedLayerAffectsTiming: 0
+ m_Controller: {fileID: 9100000}
+--- !u!1107 &4045619364918543526
+AnimatorStateMachine:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Base Layer
+ m_ChildStates:
+ - serializedVersion: 1
+ m_State: {fileID: -5744946933741941833}
+ m_Position: {x: 330, y: 80, z: 0}
+ m_ChildStateMachines: []
+ m_AnyStateTransitions: []
+ m_EntryTransitions: []
+ m_StateMachineTransitions: {}
+ m_StateMachineBehaviours: []
+ m_AnyStatePosition: {x: 50, y: 20, z: 0}
+ m_EntryPosition: {x: 50, y: 120, z: 0}
+ m_ExitPosition: {x: 800, y: 120, z: 0}
+ m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+ m_DefaultState: {fileID: -5744946933741941833}
diff --git a/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller.meta b/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller.meta
new file mode 100644
index 0000000..a24b9dd
--- /dev/null
+++ b/Assets/Animations/MainMenuAnimations/MainMenuPlayerAnim.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f063742de007154abe81cfc7508d9c1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 9100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters.meta b/Assets/Animations/Monters.meta
new file mode 100644
index 0000000..b75cf8c
--- /dev/null
+++ b/Assets/Animations/Monters.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b511ddd5c5ac9434d8031dc18c8365f7
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation.meta b/Assets/Animations/Monters/Alien1Anmation.meta
new file mode 100644
index 0000000..c624f91
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 663fdd9b45a018541900c4e9455ad2b6
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller b/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller
new file mode 100644
index 0000000..755a3c2
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller
@@ -0,0 +1,666 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1101 &-8608449861845050323
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: AttackScream
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -3478732761575392327}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &-8592960260496563573
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 2
+ m_ConditionEvent: InLight
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.97851
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 1
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1102 &-8045918876602617594
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Idle
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 6374187988066082571}
+ - {fileID: -2890399280607573796}
+ - {fileID: -8608449861845050323}
+ - {fileID: 6886663351162099139}
+ - {fileID: 3959987941609195672}
+ - {fileID: 5184814725926522922}
+ - {fileID: 2826005711599316114}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: fa14130ee2d9ef746ab13133d5c26994, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1107 &-6823298023807465139
+AnimatorStateMachine:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Base Layer
+ m_ChildStates:
+ - serializedVersion: 1
+ m_State: {fileID: -8045918876602617594}
+ m_Position: {x: 410, y: 80, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: 6292746397107399370}
+ m_Position: {x: 380, y: 290, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -5277390852839867810}
+ m_Position: {x: 210, y: -180, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -2640043726390947265}
+ m_Position: {x: 410, y: -180, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -4991608271041000256}
+ m_Position: {x: 610, y: -180, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -720464617837815001}
+ m_Position: {x: 810, y: -180, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -6722448351092568362}
+ m_Position: {x: 693.83386, y: 276.3692, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -3478732761575392327}
+ m_Position: {x: 856.5152, y: 181.33751, z: 0}
+ m_ChildStateMachines: []
+ m_AnyStateTransitions: []
+ m_EntryTransitions: []
+ m_StateMachineTransitions: {}
+ m_StateMachineBehaviours: []
+ m_AnyStatePosition: {x: 50, y: 20, z: 0}
+ m_EntryPosition: {x: 50, y: 120, z: 0}
+ m_ExitPosition: {x: 800, y: 120, z: 0}
+ m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+ m_DefaultState: {fileID: -8045918876602617594}
+--- !u!1102 &-6722448351092568362
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: PainScream
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: -8592960260496563573}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: 8cdb4328e5a350f43823009057cd3c8d, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &-5277390852839867810
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: SlapAttack
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: -1934121248908059639}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: fb51b94ebe97a1541980c6220dbb7ec5, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &-4991608271041000256
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: KickAttack
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 3840126287449210336}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: 8da88c5b1a3ca5a48a4c72b58b4f66d7, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &-3478732761575392327
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: AttackStream
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 3284725948930391759}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: 3b89122960ac9614181755ea7e0c11c5, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1101 &-2890399280607573796
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: InLight
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -6722448351092568362}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 1
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1102 &-2640043726390947265
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: SlamAttack
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: -1929447247841503549}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: aaa11c2b51608c84d8e6cda25c4cbe32, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1101 &-1934121248908059639
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9050633
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &-1929447247841503549
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9460432
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1102 &-720464617837815001
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: HeadbuttAttack
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 3811198640985440042}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: 94a7854f45b1fdb439a17ab0721622d0, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!91 &9100000
+AnimatorController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: AlienZombieAnimationController
+ serializedVersion: 5
+ m_AnimatorParameters:
+ - m_Name: Speed
+ m_Type: 1
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 0}
+ - m_Name: AttackIndex
+ m_Type: 3
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 0}
+ - m_Name: Attack
+ m_Type: 9
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 0}
+ - m_Name: InLight
+ m_Type: 4
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 0}
+ - m_Name: AttackScream
+ m_Type: 9
+ m_DefaultFloat: 0
+ m_DefaultInt: 0
+ m_DefaultBool: 0
+ m_Controller: {fileID: 0}
+ m_AnimatorLayers:
+ - serializedVersion: 5
+ m_Name: Base Layer
+ m_StateMachine: {fileID: -6823298023807465139}
+ m_Mask: {fileID: 0}
+ m_Motions: []
+ m_Behaviours: []
+ m_BlendingMode: 0
+ m_SyncedLayerIndex: -1
+ m_DefaultWeight: 0
+ m_IKPass: 0
+ m_SyncedLayerAffectsTiming: 0
+ m_Controller: {fileID: 9100000}
+--- !u!1101 &2642003355210438087
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 4
+ m_ConditionEvent: Speed
+ m_EventTreshold: 0.1
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.6875
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 1
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &2826005711599316114
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Attack
+ m_EventTreshold: 0
+ - m_ConditionMode: 6
+ m_ConditionEvent: AttackIndex
+ m_EventTreshold: 3
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -720464617837815001}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &3284725948930391759
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.91071427
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &3811198640985440042
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.90384614
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &3840126287449210336
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions: []
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -8045918876602617594}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.92857146
+ m_HasExitTime: 1
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &3959987941609195672
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Attack
+ m_EventTreshold: 0
+ - m_ConditionMode: 6
+ m_ConditionEvent: AttackIndex
+ m_EventTreshold: 1
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -2640043726390947265}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &5184814725926522922
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Attack
+ m_EventTreshold: 0
+ - m_ConditionMode: 6
+ m_ConditionEvent: AttackIndex
+ m_EventTreshold: 2
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -4991608271041000256}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1102 &6292746397107399370
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Running
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions:
+ - {fileID: 2642003355210438087}
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: -203655887218126122, guid: b13f71f6cb9cefe4cbcc4b8de93812c5, type: 3}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1101 &6374187988066082571
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 3
+ m_ConditionEvent: Speed
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: 6292746397107399370}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 1
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
+--- !u!1101 &6886663351162099139
+AnimatorStateTransition:
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name:
+ m_Conditions:
+ - m_ConditionMode: 1
+ m_ConditionEvent: Attack
+ m_EventTreshold: 0
+ - m_ConditionMode: 6
+ m_ConditionEvent: AttackIndex
+ m_EventTreshold: 0
+ m_DstStateMachine: {fileID: 0}
+ m_DstState: {fileID: -5277390852839867810}
+ m_Solo: 1
+ m_Mute: 0
+ m_IsExit: 0
+ serializedVersion: 3
+ m_TransitionDuration: 0.25
+ m_TransitionOffset: 0
+ m_ExitTime: 0.9794521
+ m_HasExitTime: 0
+ m_HasFixedDuration: 1
+ m_InterruptionSource: 0
+ m_OrderedInterruption: 1
+ m_CanTransitionToSelf: 1
diff --git a/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller.meta b/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller.meta
new file mode 100644
index 0000000..73176cc
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/AlienZombieAnimationController.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7bb101ef536f7f5488216135a0b67dbb
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 9100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx
new file mode 100644
index 0000000..3f6283a
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3599547acbea66797c0a638694ab7dd3a0f9054ddd79bc3c56d7960ef9d81977
+size 615456
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx.meta
new file mode 100644
index 0000000..9a60264
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieGetUp.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 1530a7a6e11ef494f99d84d1c93b4a2d
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 93
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx
new file mode 100644
index 0000000..4fd2c8e
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb744fecd3cecb3e19da155ab392215072269da1fd31cfb2fd6657132c85f9d6
+size 540400
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx.meta
new file mode 100644
index 0000000..7c133c9
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieHeadbuttAttack.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 94a7854f45b1fdb439a17ab0721622d0
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 78
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx
new file mode 100644
index 0000000..75153b4
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37ea537263b888c710e060f00d9e59062e9ef6cb765636054db57250a85590a9
+size 929216
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx.meta
new file mode 100644
index 0000000..5544ed9
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieIdle.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: fa14130ee2d9ef746ab13133d5c26994
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 365
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx
new file mode 100644
index 0000000..c79a911
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02821a1543ab1117710e1d1eb8d6f419ec981132b9a71ce3b47bdf5036a26490
+size 659312
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx.meta
new file mode 100644
index 0000000..27d2765
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieKickAttack.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 8da88c5b1a3ca5a48a4c72b58b4f66d7
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 105
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx
new file mode 100644
index 0000000..a6f56b1
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61d9e75de996acbfe35f2e5524c0b52b9d0025a4d27ee1bf85b4da6291713160
+size 1033520
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx.meta
new file mode 100644
index 0000000..5e90371
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombiePain.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 8cdb4328e5a350f43823009057cd3c8d
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 349
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx
new file mode 100644
index 0000000..cf43af9
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e2a22a0126eb855666a710cf66d4e2156bf4e78f54c2b6ef8c80dfc4ba7984d4
+size 579936
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx.meta
new file mode 100644
index 0000000..413ab50
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieRageScream.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: 3b89122960ac9614181755ea7e0c11c5
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 84
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx
new file mode 100644
index 0000000..486218b
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bce86f80a790437dafa682d624b45eba91c14666a80a31bf4e0ba4672c3788f5
+size 331536
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx.meta
new file mode 100644
index 0000000..e99ff44
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieRun.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: b13f71f6cb9cefe4cbcc4b8de93812c5
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 24
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx
new file mode 100644
index 0000000..2768f8a
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0431cfd82cf0623994541e3df715d70a5d0063303867f0e158738a7277366a3
+size 683488
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx.meta
new file mode 100644
index 0000000..c57af1a
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieSlamAttack.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: aaa11c2b51608c84d8e6cda25c4cbe32
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 139
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx
new file mode 100644
index 0000000..188bcb9
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e1a853c2c7edce7678fa86440ba7dc0e392fbe56be6e5f93a3d024c261993ad
+size 552496
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx.meta
new file mode 100644
index 0000000..59196c5
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieSlapAttack.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: fb51b94ebe97a1541980c6220dbb7ec5
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 79
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx b/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx
new file mode 100644
index 0000000..06ed449
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f08118d3d64f020344c125d153078646010fc65c79b4a7d73d1a5b4a9897e9d1
+size 581920
diff --git a/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx.meta b/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx.meta
new file mode 100644
index 0000000..857a8a6
--- /dev/null
+++ b/Assets/Animations/Monters/Alien1Anmation/ZombieStumbleFall.fbx.meta
@@ -0,0 +1,135 @@
+fileFormatVersion: 2
+guid: c850ede0a8acd654a8e396115f3f1879
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations:
+ - serializedVersion: 16
+ name: mixamo.com
+ takeName: mixamo.com
+ internalID: -203655887218126122
+ firstFrame: 0
+ lastFrame: 148
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 1
+ loopBlend: 0
+ loopBlendOrientation: 0
+ loopBlendPositionY: 0
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 0
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 0
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events: []
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Fonts/Offside-Regular SDF.asset b/Assets/Fonts/Offside-Regular SDF.asset
new file mode 100644
index 0000000..11eb6dc
--- /dev/null
+++ b/Assets/Fonts/Offside-Regular SDF.asset
@@ -0,0 +1,2895 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!28 &-8651066527397771524
+Texture2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Offside-Regular SDF Atlas
+ m_ImageContentsHash:
+ serializedVersion: 2
+ Hash: 00000000000000000000000000000000
+ m_ForcedFallbackFormat: 4
+ m_DownscaleFallback: 0
+ m_IsAlphaChannelOptional: 0
+ serializedVersion: 2
+ m_Width: 512
+ m_Height: 512
+ m_CompleteImageSize: 262144
+ 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: 262144
+ _typelessdata: 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0f0d0b05000000000000000000000000000000000000000000000001080b0f0f0c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c0f0e0b0801000000000000000000000001080b08010000000000000000000000000000000000000000000002050002080b08020005020000000000000000000000000000000000000000000000000000000001080b080100000000000000000000000001080b080100000000000000000000000000000000000000000000000000000000000000000000000000000000040001080b0b08010004000000000000000000000000000000000000000000000000000000000000000000040000070b0b080100050100000000000000000000000000000000000000000000000000000000000000010001080b0b0700000000000000000000000000000000000000000000000000000000000000000000000000060c0e11110e0c0600000000000000000000000000000000000000000000000000000000000000010b111318140b08020000000000000000000000000000000000000000000000000000000000020001080b08010000000000000000000000000000000000010001080b0801000200000000000000000000000000000000000000000000060b0d11110e0c06000000000000000000000000000008141c2024221f180d00000000000000000000000000000000000000000009141d202425211f170c00000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f222524201c140800000000000000050b0d141d201d140b0802000000000000000000000000000000050b0d13171b1d151d201d151d1b17130d0b05000000000000000000000000000000000000000000000809141d201d140b0802000000000000000508141c201c140d0b050000000000000000000000000000000000000000000000000000000000000000040a0c1216191d141d20201c141d1916120c0a04000000000000000000000000000000000000000000000002090b1115191c131c20201d141d1a16130d0b05000000000000000000000000000000000000000000000003090b12161b141c20201c131a15100b070000000000000000000000000000000000000000000000000000000000000e19202326262320190e000000000000000000000000000000000000000000000000000000000005131e25282e29201d150900000000000000000000000000000000000000000000000000070b10171c141d201d141a150e0c06000000000000000000070c0e161a151d201d151b17100e080000000000000000000000000000000000000e192023262623211a0e00000000000000000000000210182630353937342a1d12040000000000000000000000000000000000000919263135393a37332a1c15070000000000000000000000000000000000000000000000000000000000000000000000000008161c2a33373a39353026180800000000000d1820222631353126201d1509000000000000000000000001080e192022282c3033273136312733302c282220190e0801000000000000000000000000000000000003111c232631353126201d150900000000000d182026303530262220180d00000000000000000000000000000000000000000000000000000000000a0c171f21272b2f32263135353026322f2b27211f170c0801000000000000000000000000000000000000080a161e21262a2e32253035353126322f2c282220190d0902000000000000000000000000000000000000050a161e21272c302630353530252f2b25201c1308020000000000000000000000000000000000000000000000000006141e2c35383c3c38352c1e15070000000000000000000000000000000000000000000000000000071523313a3d433e363127190d0000000000000000000000000000000000000000000008131c20262c3126313531262f2b2321190e040000000000050f1a21242b302731353127312c25231c1106000000000000000000000000000006141e2b35383c3c38352c1f150700000000000000000311202d36434b4e4c473b2f2212000000000000000000000000000000000001142637444b4e4f4c473a332515000000000000000000000000000000000000000000000000000000000000000000000000001626333a474c4f4e4b43362614010000000d1d2b343737444b4437363127190900000000000000000009141d202b35383d41454849444b44494845413d38352b201d14090000000000000000000000000000000011212f3837444b443736312719090000000d1d2b3436434b433637342b1d0d000000000000000000000000000000000000000000000000000008121d242933363c40444749444b4b43484744403c373329201c140800000000000000000000000000000006111c232832363b40434748434a4b44494744413d37342b211e160a000000000000000000000000000000000d181f2832363c414548434b4a434844403b3530251d150a0000000000000000000000000000000000000000000000031425323c494d51514d493c3225150300000000000000000000000000000000000000000000000001152532414e5258534b44372a1d0d00000000000000000000000000000000000000010f182530353b424649444b4437454038352c1f170c0000000d181f2d3639404537444b444946413a372e20190e000000000000000000000000021424313c494d51514e493d332515030000000000000011212f3e4a54606462594c402f1c0c00000000000000000000000000000000081d31445560646461585043331e0e00000000000000000000000000000000000000000000000000000000000000000000000e1e33445058616463605443301c08000005182b3b484c59556055574b44372715020000000000000310192631353c484d53575a5d5e5560555e5d5a57534d483c35312619110300000000000000000000000000081c2f3f4b50556055574b44372715020005182b3b484d546054594d483b2b1805000000000000000000000000000000000000000000000002101b2230393a464c5255595c5e556060545e5c5955524c473a3530261811000000000000000000000000000e19202e3738454b5155595c5e546060555e5d5a56524d483b3632281a130300000000000000000000000005131d2a3438454b51565b5d546060545d5955504a433631271a10020000000000000000000000000000000000000000000c1f32434f5a636666635a4f4332200c0000000000000000000000000000000000000000000000000f1f32434f5f686d696055473b2a18050000000000000000000000000000000000010f1f2d36434a50575b5e5560555d5a554d493c33291c0c000d1d2a343d4a4e565a5e5560555e5b574f4b3f352c1e0e00000000000000000000000b1f31424e5a626666635b504333200d000000000000081c2f3f4b5c64737977665e4c3a2917040000000000000000000000000000000b20354b6073797a776a61503c2c190600000000000000000000000000000000000000000000000000000000000000000006192b3c50626b777a7973604b35200b00000b20344859626f7475736c605544311d0800000000000513212e37444b535a62686c7072737575757372706c68625a534b44372e2113050000000000000000000000000e23384b5d657375736c605544311d08000b20344859627175746f62594834200b000000000000000000000000000000000000000000000614202e37404d515861676b6e72737475757473726e6b676158524b43362f1c130800000000000000000004121e2c353f4b4f5660666a6e71737475757473726f6b686259544b4538311e160a00000000000000000000061423303b484c5660676b707374757574726f6a6560544b45382d201103000000000000000000000000000000000000000012273b4f6169787b7b7869614f3c27120000000000000000000000000000000000000000000000071a2d3d4f616a7d837e74625947341f0b00000000000000000000000000000000000f1f2d3d4a5460656c7173757574736f6a635b4c473a291b0d1d2a3b484c5b636b6f7374757573706c655d4d493c2c1e0e0000000000000000000011263b4e6069787b7b786a61503c28130000000000000e23384b5d657a868e8a7c665846331f0a0000000000000000000000000000001b30455a70848e8f8b806a5a4935200c0000000000000000000000000000000000000000000000000000000000000000000b2035495a6b808b8f8e846f5a45301a00000d22374c627783898a888174604b36200b00000000041323303f4b55606870787d818588898a8b8a898885817d78706860554b3f31231305000000000000000000000010253b50657b888a898173604b36200b000d22374d6277858a898377624d37220d000000000000000000000000000000000000000000061424323e4b4f5f676f767c80848788898a8a89888784807c766f6760544c4030251808000000000000000312222f3c494d5d656e757b7f838788898a8a89888784817d77706960564e4132281b0a000000000000000005142532414d59626c757c818588898a8a898784807a736960564a3e2e2111010000000000000000000000000000000000000014293f54697f8d91918d7f69543f2a1400000000000000000000000000000000000000000000000c21364a5b6a7f9298938477624c37220d0000000000000000000000000000000009192d3d4a5b63727b8186898a8a89888480786e6158473929182a3b4859626f798085888a8a8a8985817a70635a493c2c180800000000000000000014293e53697e8d91918d7f6a55402a1500000000000010253b50657b8b9ca49e8976614c36210f0000000000000000000000000000001c31465b71869baa9f8c78634d38230e0000000000000000000000000000000000000000000000000000000000000000000d23384d62788c9fab9b86715c46311c0000152a40556a7f959ea79e907b65503b251000000000122230414d5d65737d858b92969a9d9e9faa9f9e9d9a96928b857d73655d4e413123130000000000000000000000152b40556a8095a69e927d68533d28130010253a50657a8f9f9f98826d583b2a18050000000000000000000000000000000000000002142432424f5c64707c848a9195999c9e9fa99f9f9d9c9995918a847d73655e4a433625130000000000000011222f404c5a636e7a83899095989c9d9e9fa99f9e9c9996928b857e75685f4b453928190900000000000000132332434f5f6777818991969a9d9ea89f9e9d999590877f74645c4b3f2e1f0f000000000000000000000000000000000000051a30455a6f859aa6a69a85705b45301b060000000000000000000000000000000000000000000417293a4e63798b9fada29a846f5a45301a050000000000000000000000000000021527374a5c64798690979b9e9fa99f9d9a958c8276615746331f3447596277838e959a9d9fa99f9e9b968f8578635a493625130000000000000000001a2f445a6f8399a6a69b85705b46311b000000000003182e43586d8398a9b6a795806a553e2d1a070000000000000000000000000000162c41566b8196abab937e695337261401000000000000000000000000000000000000000000000000000000000000000114263653687e93abab96816c56412c170001162c41566b8196abb8a6917c66513c27110000000c1c30404d5f677b86929b9fabacafb2b2b1b1b1b2b2afacab9f9b92867b685f4e41301d0d0000000000000000000011263b50667b90a5ad98826d58392917030b21364b60768a9fb29d88735948341f0b00000000000000000000000000000000000000102032424f61697a8591999faaaaaeb1b3b1b1b1b2b3b1aeaaaa9f9a92867b6b605443301c1300000000000c1c2f404c5e6678838f989ea8aaaeb1b3b2b1b1b1b3b2afabab9f9b93877d6e6057453727150200000000000b1b30414f61697d89969ea7abb0b2b2b1b1b2b2aeaaa59d94867a655d4b3d2d1a070000000000000000000000000000000000051b30455a70859aafb09a85705b45301b060000000000000000000000000000000000000000000a1f3346586d8298aabbab9a85705b45301b060000000000000000000000000000081d314455647a8a9ca4acb0b3b1b1b3b2afab9f988675614c3d2e3f4c62778799a1abafb3b2b1b2b3b0aca39b8978625443301c0700000000000000001a2f445a6f8499afb09b86715b46311c00000000000011263b50667b90a2b4b29d87725c4a36210d000000000000000000000000000011263b50667b90a9ae99836e5544311d0800000000000000000000000000000000000000000000000000000000000000081c3043546e8398aeaa907b66513b26110001162c41566b8196abbba6917c66513c2711000004172a3a4d5f677d8c9ca4b0b4aea7a99f9d9c9b9c9d9faaa8afb5b0a49c8c7d685f4d3b2a18050000000000000000000c21374c61778ca5b19c87725746331e0a091e32455771869cb1a68c77624c37220d000000000000000000000000000000000000071b2d3e4f60697f8c9ba3aeb4b0a9a4a69e9c9b9c9c9ea6a4a9afb4afa49c908072604a41301a0a00000004182a3a4c5e667c8a99a1adb4b2aaa5a79e9c9c9b9c9d9faba8aeb4b0a69d928375605544311d0e00000000031729394d5f697f929ea7b3b2a9a99f9c9b9c9d9faaabb4b2a49c8b7b655b4a3621110000000000000000000000000000000000051b30455a70859aafb09a85705b45301b060000000000000000000000000000000000000000000c21364c61768a9fb4b49f8c7a644f3a240f0000000000000000000000000000000b20364b6074879ca8b5b0aa9f9c9b9ea6b0b4b5a498826d5b4a374b5d6f8499a5b3b3aea69d9b9c9fabb1b4a79b8572604a35200d00000000000000001a2f445a6f8499afb09b86715b46311c0000000000000f23384c5e70859bb0b7a58e79644e39240f00000000000000000000000000000b21364b60758a9fb39e8974604b35200b000000000000000000000000000000000000000000000000000000000000000b20354b6074899eb39f8a76614b36210c0001162c41566b8196abbba6917c66513c271100000a1f334758677d8d9faab5aa9f99928d8a88878687888a8d92999fabb5aa9f8d7d675948341f090000000000000000000a1f33475872879db29f8b76614c36210c03162839586d8297ada6907b66513b26110000000000000000000000000000000000000d22364a5c697e939faab4b1a39b948e8b8887868687888b8e939aa2b0b4b19e96816c5f4d3827150200000a1f344759667c8c9ea8b3b3a59c958f8b8987868687888b8e93999faab2b2a1998473604b3c2b19050000000a1e334657677d929db3b3a69d948d89878686888a8f969ea8b5a99e8a79634e402f1c0900000000000000000000000000000000051b30455a70859aafb09a85705b45301b0600000000000000000000000000000000000000000011263b51667b90a9baad98826d5c4a36220d0000000000000000000000000000071a2d3d53687e93a5b6b09e958b8786888e9ba3b4b59f8c79634e374f657a8fa1b3b3a1998d8886878b979fb1b5a3917c67523b2b1805000000000000001a2f445a6f8499afb09b86715b46311c000000000000091c2f4052687d92abbca8937e68533e29130000000000000000000000000000091e3245566f859aafa78f7a644f3a250f000000000000000000000000000000000000000000000000000000000000000f243a4f647a8fa7af9a85705746321e090001162c41566b8196abbba6917c66513c271100000c21374c6176889eabb5a39b8c837d7875727171717275787d848d9ca4b6ab9e8977624c37261401000000000000000004172a3a596e8398aeab8f7a65503a25100013293e53687e93a8aa957f6a55402a15000000000000000000000000000000000006192c3c4f647a8c9fb4b5a49c8f857e797673727171727376797e858e9ba3b3b09f927d675645311d0900021527374c6177899eaab8a79e9287807a7673727171727375787d838c99a1b0b3a295806b5a4835200b0000000c21364c6176889eb3b3a199887f787572717172757a808a9ca4b5a89a84705e4c38230e00000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000000152a40556a7f95aabbaa907a65503e2d1b0700000000000000000000000000000c21364a5b71869cb1b2a095807672717379859ba5b6ab96816b5644556d8298adb5a3998379737172778197a1b3af9a8570594834200b000000000000001a2f445a6f8499afb09b86715b46311c000000000000001221374c61768b9fb5ac97816c57422c17020000000000000000000000000003162838546a7f94a9aa957f6a5539291703000000000000000000000000000000000000000000000000000000000003162839556a7f94aaaa947f6a55392816030001162c41566b8196abbca6917c66513c271100061a2c3d566b8095a6b7a59b85796e676260545c5c5c556063686f7a869ca5b7a797816c5544311d08000000000000000000142a3f54697f94a9a9947e69543f2914000f243a4f64798faaae99846f593b2b1805000000000000000000000000000000000c2035495a6f849aaab5a49c867a70696460575c5c5c5d5761646970798599a1b3b39d8874604b36200b00081d3144556c8196a7b8a79e897d736a6561585d5c5c5c566063686e7883969eb0b49f8b78624d38220d000004182a3a556a7f94a6b6a5998375696360545c5c5660646b78869ca9b4a2907b65503b261000000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000002172c42576c8197acb49f8a75604b3620100000000000000000000000000000000e23394e63798ea4b5ad98826e61585c5c6475879db2b29c8772594b6074889eb3b09b8573635b5c58616f8499afb49f8b77624d37220d000000000000001a2f445a6f8499afb09b86715b46311c000000000000000a1f33475872879db2af9a856f5a45301a0500000000000000000000000000000f24394f64798ea7b09a85705746331e0a0000000000000000000000000000000000000000000000000000000000091e32465770859aafa78f7a644f3a240f000000162b40556b8095a4ab9f907b66503b2611000c2135495b72879db2b29d8776635b524d4b43364637444b4d535c6476879db2b39e8874604b35200b00000000000000000010253b50657a90abad98836d583a2917040b20364b60758a9fb39d8873594834200b000000000000000000000000000000000e23384d63788da2b4b19c8676655d544f4b4539464739464b4f545c64738399a8b7a6917c67513c2712000b20364b6075899eb3b39e8979676054504c463a474638454b4e535a626e8096a5b6aa95806a55402b1500000a1f34475971869bb1b29c877460574e4b433638454b4f5a63788a9fb4ac97816c5736251300000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000003182e43586d8398adb39e88735544311d0800000000000000000000000000000014293f54697e94a9b7a68e79644f463e4a57687d92aab6a58c77624e63798ea7b8a8917c6655493d4750657b90a8b9ab927d67523d2812000000000000001a2f445a6f8499afb09b86715b46311c000000000000000417293a5a70859aafb09b86715b46311c0600000000000000000000000000000b20354b6074889eb39f8a76614b36210c00000000000000000000000000000000000000000000000000000000000c21364b61768a9fb39e8974604b35200b0000000e23384e6379868c8d8b8375614b36210c000e23394e63798ea5b6a8937e6958493d3835302631263135383e4a58687d92a8b8a68f7a644f3a240f0000000000000000000c21364c61768b9fb29c87725846331f0a091d32455671869bb1a68c77624d37220d0000000000000000000000000000000013293e53687e93a8b9a88f7a65584b3f393632283131283236393d4a5561778a9fb4ac97826d57422d180010253a4f657a8fa7b9a9937e695b4a43363633293131283236393c484d6073879cb2b09b86705b38271502000c22374c61778ca3b5a9947f695645393530262731363c495a6e8398aeb29d87725443301c07000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000003192e43586e8398adb29d88725d37271502000000000000000000000000000003162839586e8398adb29d88735c4a362d394c61768a9fb4a5907b6552677c91a7b49e8975604b372c354b6075899eb3ac96816c57362513000000000000001a2f445a6f8499afb09b86715b46311c0000000000000000192e44596e8399aeb29c87725d47321d080000000000000000000000000000081c3043546e8398aeaa907b66513b2611000000000000000000000000000000000000000000000000000000000011263b50667b90a9ae99836e5544311d080000000c2135495b63717677766f615746321e090011263b50667b90a5c3a38e79644e3a2c23201c141c141d20232d3a4d62788da2c4a6917c67513c27120000000000000000000a1f33465872879cb29f8b76614c36210c02152838576c8297aca6917b66513c261100000000000000000000000000000000172c41566c8196abb49e89745d4b3a2e24211e161c1c161e21242d3747596f859aafb09b85705b46311b0013283e53687d93a8c5a28d78624d3d3025211f171c1c151d20232b3444556c8196abb49e89745645311d09000f24394e64798ea3c1a5907a65503828201c14151d202c3c546a7f94a9b49f8a74604a35200b000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000003192e43586e8398adb29d88725d48331d000000000000000000000000000000091e32465772879db2ae98836e593e2d1f33465871869bb1a8937e69556a8095aaaf9a856f5645311d3144556f849aafb09b86705443301c070000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000114263653687d93a8ab96816c563b2b190500000000000000000000000000000000000000000000000000000005182b3b566b8196aba8937e685337261401000000061a2c3d494e58616261574b46392816030012283d52677d92a7b7a28c77624d37220f0b08010001080b1021364b61768ba0b6a9937e69543e29140000000000000000000417293a586d8398adab907a65503b25100013283e53687d93a8aa95806a55402b1500000000000000000000000000000000182d43586d8298adb29c87725d3f2e1c110b0903000003090c0f192a3a586d8398adb29c87725d47321d00152a3f546a7f94a9b6a08b76614b3621130c0a04000002090b0e192637546a7f94a9b9a88b75604b36200b0011263b50667b90a5b9a48e79644f39240f0801020913293e53687e93a8bbaa8c76614c37210c000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000c21364b61768b9fb5a9947f6a543f2a17293a586d8297adab96806b586d8298adab96816b563827152737566b8096abb49e8974604a35200b0000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000d23384d62788da5b19c8771594834200b0000000000000000000000000000000000000000000000000000000b2034485971869cb1a58d78634d38230e00000000000f1f2c353a474c4d4b463932281b0b000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000060c0d131314293f54697e94a9a9947f69543f2a14131324394f64798ea9ae99846f593b2b191313131313110f090000000000000000192e43586e8398adb29c87725d47321d00000000000000000000182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9c6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8c8a28c77624d37220d000000000000000000000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000f24394f64798eabbca6917b66513c26142a3f54697f94a9ad98836e5a70859aafa8927d68533d2813283d52687d92a7b9a88d78624d38220d0000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000b2035495a72879cb2a48c77624d37220d0000000000000000000000000000000000000000000000000000000d22374c62778ca4b29d87725a4935200c0000000000010f1a212a3337383632281e160b00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000e192023282929293a50657a8fabad98836e583a2929292929364b60758a9fb39d887359483429292929292926231c1103000000000000192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000001b30455a70859aafb09a85705b45301b00000000000000000000000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000013283d52687d92a7baa98d78634d382311263c51667b91a6b09b85705472879db2a48f7a654f3a2510243a4f64798fabbca6907b66513b26110000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000006192b3c576c8197aca7927d685236251300000000000000000000000000000000000000000000000000000012283d52677d92a7ac97826c573c2c190600000000000000060c171f2122211e160b030000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000e1e2c35383e3e3e3e3e4b61768b9fb29c877258463e3e3e3e3e3e445570869bb0a68c77624d3e3e3e3e3e3e3e3b382f2211020000000000192e43586e8298a9a99c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000c1730455a70859aafb09a85705b4530180d000000000000000000000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000001162b41566b8096abb49f8975604b35200e23384d63788da9b29d887360758a9fb4a68c76614c37210c21364b61768b9fb5a9947f69543f2a140000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000012273c51677c91aaad98836d5443301c0700000000000000000000000000000000000000000000000000071a2d3d586d8298adab917c67523c27120000000000000004121d242631343024211a0f0100000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000006192c3c494d5353535353535771879cb1a58b76615353535353535353576c8197aca6917c665353535353535353504c402f2110000000000014293f54697e8f939491826d58432e1803000000000000000003182e43586d8398adb29d87725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000006141c2933455a70859aafb09a85705b45342b1c130800000000000000000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000003162839596f8499aeb19b86715443301c0b20354b60758a9fb49f8a7562778daab39d88735847331f0a1e32465772879db2ad97826d583625130000000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000c21374c61768b9fb39d8874604a35200b000000000000000000000000000000000000000000000000000c21364a5b73889db29f8b77614c37210c00000000000000122230383c47494639362d1f0f00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000c2035495a62686868686868686d8298ada5907b68686868686868686868687d92a7aa95806b6868686868686868665e4c3f2e1b080000000012273b4f61697a7e7e7b74604b36200b00000000000000000003182e43586d8398adb29d87725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000081724323a474c5a70859aafb09a85705b4d483b30251808000000000000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000091e32455772879db2ad98826d58362614081d31445571869cb1ab8d78657a8fa4af9a856f5a3a291704162839596f8499aeb09b86705443301c0700000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000a1f33475870859bb0a68e79634e39240e000000000000000000000000000000000000000000000000000e23394e63798ea6b09b86715847331f0a000000000000091d30404c515c5e5b4e4a3d2d1a07000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150005182a3b4d62787d7e7e7e7e7e7e7e8399aead98827e7e7e7e7e7e7e7e7e7e7e8095abb19b857e7e7e7e7e7e7e7e7e7b665d4b37220e000000000c1f32434f5d65696966605645311d0900000000000000000000182e43586d8398adb29d87725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000005172734424f58616970859aafb09a85706a62594a43362513000000000000000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000b21364b60768a9fb4a9947f6a543f2a1501142637596e8398aea48f7a677c92a7ac97816c57422c1700162b41566b8096abb49e8974604a35200b00000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000417293a556b8095aaa9947e69543828150200000000000000000000000000000000000000000000000215273754697e93a9ab95806b563a2a17040000000000000f24384c5e66717370635b4a36210c000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000b1f3448597287939393939393939399a1b2b2a0989393939393939393939393959eb0b5a39b9393939393939393938f7a654f3a251000000000031424323f4b505454514b453827150200000003090b0f121518172e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0011273c51667c91a6b9a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000013233445516069767e848b9fb4b49f8c857f776a605443301c140000000000000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000f24394f64798eabbca6917b66513c261100152b40556a8095aaa7927c6a7f94a9a8937e69533e29140013283d52687d92a7b9a88d77624d38220d00000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000010253a50657a8fa8af99846f5645321d090000000000000000000000000000000000000000000000081d3144556f8499aea9907a65503b25100000000000000011263c51667c86898579634e39240e000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000d22374c62778ca5a8a8a8a8a8a8a8aeb2bfbeb2ada8a8a8a8a8a8a8a8a8a8a8abb0bcc1b5b1a8a8a8a8a8a8a8a8a8947f69543f2a1400000000000614212e373a3e3f3c3631271a0a0c101317161e2124272a2d2a3343586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000000000000007152a3f546a7f94a9c6a08b76614b36210c0011273c51667c91a6b2a48e79644f39240f0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000c1c314251636c7e8a93999fa9babbaa9f9b958a7f72604a42321c0c00000000000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000012283d52677d92a7baa88d78624d38230d0012273d52677c92a7a9947f6c8297aca5907a65503b2510000f24394f64798eabbca5907b66503b261100000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000b20364b6075899eb49f8a75604b36200b00000000000000000000000000000000000000000000000b20364b6075899eb49f8a75604b36200b000000000000081d33485d72879c9e97816c57422c17020013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000d22374c62778ca5a8a8a8a8a8a8a8a8acb1bdc0b4b0a8a8a8a8a8a8a8a8a8a8a8a9aebbc4b8b3a8a8a8a8a8a8a8a8947f69543f2a1400000000000003111c2325292926201d15161e2125292c283236393c3f433a474c586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c000000070b0d10141b222c3c556a7f95aab9a88a75604b35200b0010253a50657a8f9b9c9b8d78634d38230e0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000417293a4e606c81939ea8afb4b3b0b0b2b4b0a99f94826d604f3a2a1804000000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000001162b40566b8095abb49f8975604b35200b000f24394e64798eabac97816f8499afa78c77624c37220d000c21364b61768b9fb5a9947e69543f291400000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000091d3145566f8499afa9907a65503b2510000000000000000000000000000000000000000000000010253a50657a8fa8af9a846f5645321d090000000000000a1f34495f74899ead98836e58432e19030013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000b20354a607387939393939393939393979fb1b4a29a9393939393939393939393949daeb8a69d93939393939393938f7a644f3a250f0000000000000000080e101414141d20252832363a3e4139454b4e5155585b5861646d8298adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210f1216131c202226292d363c495a6d8298adb39e89745544311d08000b20354a60727f8687857e685a4935200c0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a1f334658687d929fb4b6b1a69d9a9a9da6b1b5b4a0937e695947341f09000000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000003162838596e8499aeb09b86715443301c08000b21364b60768a9fae998471879cb19e89735948341f0b00091e32465772879db2ac97826d57422d1800000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000215273854697e94a9ab95806b563a2a17040000000000000000000000000000000000000000000417293a556b8095aaa9947f695438281502000000000000081d314455758a9fae99846e59442f19040013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500071c30435463797e7e7e7e7e7e7e7e7e8197acb09a847e7e7e7e7e7e7e7e7e7e7e7f94a6b39d887e7e7e7e7e7e7e7e7b665c4b37220d000000000000000000000c171f2631353b39464b4f53575a576064676a6d7073777a7d859bb1b29d88725d48331d00152a3f556a7f94aab6a08b76614b362125282b253035383b3f3e4a4e5a62788a9eb4b09b86705b3726140100071c304354606a70727068604e3c2c19060000000013293e53687e93a8b7a28c77624d37220d0000000000000000011426374c6176899eb3b6a49c8f888585888f9ca4b5b49e8a77614c372715020000000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000091e32455672879cb2ad98826d583626140100091e32455672879db19c8674899eb09b85705b3b2a18050003162839596f8499aeb09b85705b3b2b1905000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000e24394e63798ea6b09b86715847331f0a0000000000000000000000000000000000000000000a1f33465870859bb0a68e79644e39240f000000000000000b20364b60758baaaf99846f5a442f1a050013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000132536495b63686969696969696969798ea8af9a856f6969696969696969696973889eb39f8a7569696969696969665e4c3e2e1b08000000000000000005131c2a3337444b5056576165686c6f7276797c7f8285898c8f929ba3b5b29d88725d48331d00152a3f556a7f94aab6a08b76614b36373a3d4036434a4d5054585c646c78869ca8b9ab96806b56412b16000000132536434a545b5d5b534e42311e0e000000000013293e53687e93a8b7a28c77624d37220d0000000000000000081d3144556a7f95a7b8a79c867a737070737a869ca6b7a895806b5544311d080000000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000b21364b60768a9fb4a9947f6a543f2a15000003162838596f8499ae9e89778ca8ac97826d57422d18000000162b41566b8096abb39e8974594834200b000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000c21364a5b73889db39f8b77614c37210c0000000000000000000000000000000000000000000c21364c61768b9fb39e8874604a35200b000000000000000c21364b61768ba0af9a85705a45301b050013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000008182c3d494e53535353535353536074899eb39e89746053535353535353535a6f8499afa98e7964535353535353504c402f20100000000000000000071423303a474c5560656b71767a7e8185888b8e9194989b9ea7a4a7b1b5c1b29d88725d48331d00152a3f556a7f94aab6a08b76614b474c4f52555954606265696d7379818b9ca4b5b59f8c79634e39240e00000008182530353f4647463e3a31241400000000000013293e53687e93a8b7a28c77624d37220d00000000000000000b20354b6074889db2b39e8977655d5b5b5c6477889db3b39e8874604b36200b0000000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000f24394e64798eabbca6907b66513b2611000000162c41566b8196aba7947e94a9a9947e69543f291400000013283d52687d92a7b9a88c77624d37220d000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000071a2d3d586d8298adab917c67513c271200000000000000000000000000000000000000000011273c51667c91aaad98836d5443301c07000000000000000c22374c61778ca1b09b86705b46311b060013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000e1f2c35383e3e3e3e3e3e3e435470859ab0a78d78634d3e3e3e3e3e3e40556b8095aaa8927d68533e3e3e3e3e3b382f2212020000000000000003142532414d58616a747b81868a8f93969a9d9faba6aaadb0b3b2afacb1b5c2b29d88725d48331d00152a3f556a7f94aab6a08b76615b586164676b6e7174777b7e83888e969fa9b5b1a397826d5b4a36210c0000000008131c202a31323029261f140600000000000013293e53687e93a8b7a28c77624d37220d000000000000000010263b50657b90a6b7a9947f69594b3f3e4a59697e93a9b8a6907b66513b26110000000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000012283d52677d92a7b9a88d78624d38230d00000013283d53687d92a8ae9d949daea5907b66503b26110000000f24394f64798eabbca5907b66503b2611000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000012283d52677d92a7ac97826c573c2c19060000000000000000000000000000000000000006192b3c576c8197aca7927d685236251300000000000000000d22384d62778da2b19c86715c47311c070013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000e1a21232929292929292636566c8196aba7917c67523c29292929293c51667c91a6ac97816c57372729292926231c12040000000000000000112132434f5f6776808890969b9faaa8acafb2b3b0adaaa7a3a69d9a979ca4b5b29d88725d48331d00152a3f556a7f94aab6a08b756d7073767a7d808386898d9094989da6acb4b4ae9f978575614b3d2d1a07000000000000070b151b1d1b13110b020000000000000013293e53687e93a8b7a28c77624d37220d0000000000000005192b3c576c8196acb49f8a76614c3b2e2e3a4c61768a9fb4ac97816c573c2b190600000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000001162b40566b8095abb49e8974604a35200b00000010253a4f657a8fa4bbaea9aeb9a88d78624d38220d0000000b21364b60768b9fb5a9947e69543f2914000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000d22374c62778ca4b29d87725a4935200c000000000000000000000000000000000000000b2035485a72879cb2a48c77624d37220d00000000000000000e23384e63788da3b29c87725d47321d080013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000060c0e131414141414283d52677d92a7ab96806b56362513141422384d62778da6b09b86705544311d1414110f0f0d0b05000000000000081c2e3f4f61697d89959da6abb1b4b0aba8a4a79e9b9895918e8b888581869cb1b29d88725d48331d00152a3f556a7f94aabfaa95808285888c8f9295989c9fa8a5a9adb2b3aeaa9f998f8275615746321f0f00000000000000000000060806000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000b2035485a72879cb2af9a846f5847331d1e3346576f8499aeb29d87725a4935200b00000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000002162838596e8499aeb09b86715443301c070000000c21374c61768ca6b8c2bec9b49e8974604a35200b000000091e32455772879db2ac97826d57422d18000000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000b2034485971869cb1a58d78634d38230e000000000000000000000000000000000000000d23384d62788da5b19c8772594834200b00000000000000000e24394e63798ea3b29d88725d48331d080013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000a151d2024252525394e63788ea8af9a856f5443302525252534485a73889eb39f8a75604b362525252525252220190e00000000000e23374b5d697f919ea7b3b4b0a99f9a96928f8c8986827f7c7976736f6d8298adb29d88725d48331d00152a3f556a7f94aabfaf9e95979b9ea7a4a7aaaeb1b4b2aeaba7a79e99938b837a6d6157463929160100000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000d22384d62788da5b6a9947f69543a2a1717293954697e93a9b7a58d78624d38230d00000000000000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000091e32455672879cb2ad97826d58362513000000000a1f33475873889eb3c8d3c6b09b86715443301c0700000003162839596f8499aeb09b85705b3b2b18050000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000005182b3b566c8196aba8937e68533726140100000000000000000000000000000000000114263653687d93a8ac96816c573b2b190500000000000000000f243a4f64798fa4b39e88735e49331e000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000a1a273136393a3a3a3a4b6074899eb39e8974604a3a3a3a3a3a3a3c5a6f8499afa98e79644e3a3a3a3a3a3a3a38352b1e0f01000006192c3c50657b8d9fb3b8b4a29a918a85817d7a7774706d6a676461575a6d8398adb29d88725d48331d00152a3f556a7f94aabfbcafaaadb0b3b3afaca9a6aa9f9c9996928e89847e776e645c4b4639291b0b0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000013283d52687d92a7b8a78e79644f39240f0e24394e63798ea6b8a8927d68533d281300000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000b21364b60768a9fb4a9947f69543f2a140000000004172a3a5a70859aafc5d7c2ad98826d583625130000000000162b41566b8096abb39e8974594834200b0000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000011263b51667b90aaae99836e5544311d080000000000000000000000000000000000081c3043546e8398aeaa917b66513c261100000000000000000010253a50657a8fa5b49e89745f492715010013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000002152738454b4f4f4f4f4f4f5470859ab0a78d78634f4f4f4f4f4f4f4f556b8095aaa8927d68534f4f4f4f4f4f4f4d483c2d200f00000c2135495b70859babbaa99f92857c76706c686561595b5855524e4b46586d8398adb29d88725d48331d00152a3f556a7f94aabfbcafaaa7a4a69d9a9794918d8a8784807d79746f6862594f4a3e32291b0b000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000006192c3c586d8297adb39e8974604b35200b0c21364a5b73889eb3ad98826d583c2c1906000000000000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000f24394e64798eaabba6907b66513b26110000000000172d42576c8297acc1d4bfa9947f6a543f2a15000000000012283d52677d92a7b9a78c77624d37220d0000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000000000c21364b61768a9fb39e8974604b35200b00000000000000000000000000000000000b20354b6074889eb39f8a76614b36210c00000000000000000011263b50667b90a5b49f8a755544311d080013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000091d31455660646464646464646c8196aba7917c67646464646464646464667c91a6ac97816c6464646464646464625a4a3e2d1a07000e23384d63788da3b4b49f8b7d7067605756534f4c473a43403c393643586d8398adb29d88725d48331d00152a3f556a7f94aabfaf9e95918e8b8885827e7b7875726f6b67636054534c483b362e1e160b00000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000c2035495a72879db2ae99836e5443301c08071a2d3d586e8398adb29d88735b4935210c000000000000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000012273d52677c92a7b9a88d78624d38230d000000000014293e54697e93a9bed8c7a6917c66513c271100000000000f24394f64798eabbca5907b65503b26100000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000091e32465770859aafa78f7a644f3a240f00000000000000000000000000000000000f24394f64798ea7b09a85705746331e0a00000000000000000011273c51667c91a6bbaa8a75604b35200b0013293e53687e93a8b7a28c77624d37220d000000000000020c21364b61768ba0b6a9947f69543f2a1400000000000b20364b6074797a7a7a7a7a7a7a8095abad97817a7a7a7a7a7a7a7a7a7a7a7d91a6b19c867a7a7a7a7a7a7a7a7a78645c4a36210d0013283e53687e93a8bbaa947f6a5f524b45393d3a37342a2d2a27242e43586d8398adb29d87725d48331d00152a3f556a7f94aabfaa95807c797673706c69666360555956524e4b433637342a221b10030000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000d23384d62788da5b7a8937e6953362614010013283e53687d93a8b7a68d78634d38230e0000000000000000010a1012192e43586e8398adb29d88725d48331d1414110f0900000000000000162b40556b8095aab49e8974604a35200b000000000011263b50667b90a5c6cebaa98d78634e38230e00000000000b21364b60768b9fb5a9937e69543e29140000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000003162839556a7f94aaaa947f6a553928160300000000000000000000000000000003162838546a7f94a9aa957f6a553929170300000000000000000012273c52677c91a7b6a08b76614b36210c0013293e53687e93a8b7a28c77624d372214141414141516151d22374c61778ca1c8a7927d67523d28120000000001142636586e828e8f8f8f8f8f8f8f959eb0b1a0978f8f8f8f8f8f8f8f8f8f8f919bacb5a49c8f8f8f8f8f8f8f8f8f8c7a644e39240f00162c41566b8096abb49f8a76614c413632282825221f18181512182e43586d8398adb29d87725d48331d00152a3f556a7f94aab6a08b76676461575a5754514e4b4437413d39353026221f180d0700000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000013283d53687d92a8b7a68e79634e39230e00000e23384d63788da5b7a8937d68533e28130000000000000005121d2427292e43586e8398adb29d88725d483329292926241d12040000000002152838596e8399aeb09b86705443301c0700000000000d22384d62778da8b9c9b49f8a75604b35200b0000000000091e32455772879db2ac97826c57422d170000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000f243a4f647a8fa7af9a85705746321e09000000000000000000000000000000091e3245566f859aafa88f7a644f3a250f0000000000000000000013283d52687d92a7b6a18c77614c37220c0013293e53687e93a8b7a28c77624d372929292929292a2b2832364350657a8fa5bbaa907b65503b261000000000081c30435474899fa4a4a4a4a4a4a4abb0bcbeb1ada4a4a4a4a4a4a4a4a4a4a4a6acb9c2b5b1a4a4a4a4a4a4a4a4aa947f6a543f2a1500182d42586d8297adb29d8872574633211e1613100c0a04000003182e43586d8398adb29d87725d48331d00152a3f556a7f94aab6a08b76614f4b4639423f3c383631272b2823201c140d0b05000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000006192c3c586d8298adb39d88735b4936210c00000c2035495a72879db2ad98836d583d2c1a06000000000004122330393c3e3e43586e8398adb29d88725d483e3e3e3e3c382f221203000000091d32455672879cb1ad97826d583625130000000000000b20354a6074899eb4c6b19c86715544311d08000000000003162839596f8499aeb09a85705b3b2b180500001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000b20354b6074899eb39f8a76614b36210c0000000000000000000000000000000b21364b60758a9fb39e8975604b35200b0000000000000000000013293e53687e93a8b7a28d77624d38220d0013293e53687e93a8b7a28c77624d3e3e3e3e3e3e3f3f4038454b51616e8398adb49f8a77614c37210c000000000b20354b60758a9facacacacacacacacaeb3bfc3b6b2acacacacacacacacacacacacb4bcc7bab4acacacacacacacaa95806a55402b1500192e43586e8398adb29c87725d39291709030000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b3632292d292623201d1516120e0b0801000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000c2135495b73889db2ad98836d583d2c1a06000006192c3c586d8297adb39d88735b4935210c0000000000122230414d51545454586e8398adb29d88725d5454545454514c402f21110000000b20364b60758a9fb4a9947f69543f2a14000000000000071c30435471869bb0c3ae98836e5937271501000000000000162b41566b8096abb39e8974594834200b00001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000081d3144556e8399aea9907b66513b261100000000000000000000000000000011263b50667b90a9ae99846e5544311d080000000000000000000014293e54697e93a9b8a28d78634d38230e0013293e53687e93a8b7a28c77624d53545454545454555558566066707f94a0b2af9a846f5847331f0a00000000081c304354718697979797979797979799a1b3b6a59d9797979797979797979797979fabbaa99f9797979797979797917c67513c271200192e43586e8398adb29c87725d47321d00000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b3621161714110e0b0802000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000e23384d63788da6b7a8927d68533d28130000000012283d52677d92a7b7a68d78634e38230e00000000091d2f404d5f67696969696e8398adb29d8772696969696969665e4c3f2e1c0800000e24394e63798eaabba5907b66503b261100000000000000132536586d8298adbfaa95806a55402b150000000000000012283d52677d92a7b9a78c77624c37220d00001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000114263753687e93a8ab96816c563b2b18050000000000000000000000000004182a3b566b8196aba8937e69533727150100000000000000000000152a3f546a7f94a9b8a38e79634e39240e0013293e53687e93a8b7a28c776261686969696969696a6b6d70757b84949dafb2a0917c66513a2a170400000000011426364f647a8182828282828282828399aeb29d878282828282828282828282828d9fb49f8b81828282828282827f72604b35200b00192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000013283e53687d93a8b7a58d78624d38230d000000000d22374d62778ca4b6a8937e6853362513000000000f24384c5e677c7e7e7e7e7e859bb1b39e897e7e7e7e7e7e7e7c665d4b37230e000012273c52677c91a7b9a88d78624d38220d00000000000000152a3f556a7f94aac5a7917c67523c2712000000000000000f24394f64798eabbca5907b65503b251000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000000e23384d63788da5b19c8671594834200b000000000000000000000000000b1f34475971869bb1a58d78634e38230e0000000000000000000000152b40556a8095aab9a48f79644f3a240f0013293e53687e93a8b7a28c7762757d7e7e7e7e7e7e7f8082858a909aa2afb2a298826e5e4c381c0c0000000000000822374b5c646c6d6d6d6d6d6d6d6d778ca5b19b86716d6d6d6d6d6d6d6d6d6d71869cb19f8b766d6d6d6d6d6d6d6a605443301c0800192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000061a2c3d586e8398adb29d87725a4935200b000000000b2034485972879cb2ae98836e5443301c0700000011263c51667c9193939393939ba3b5b8a79e93939393939393907b65503b25100000162b40556b8095aab49e8974604a35200b0000000000000011273c51667c91a6b1a78e79634e39240e000000000000000b21364b60768a9fb4a9937e69543e291400001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000000c2035495a72879db2a48c77624c37220d000000000000000000000000000c22374c61778b9fb29d88725b4935210c0000000000000000000001162b41566b8096abbaa58f7a65503a25100013293e53687e93a8b7a28c776c81939393939393949495979a9fa9afb4b1a0988476614c402f1d00000000000000071b2e3e4b4f57575757575757575972889db29f8a75605757575757575757586d8298adab907b65575757575757554b433626140100192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000c2135495b73889db3ac97826d573c2b19060000000005182b3b576c8197acb39e8874604a35200b000000152b40556a8095a9a9a9a9a9b1b5c1c5b8b3a9a9a9a9a9a9a9947f69543f2a140002152738596e8399aeb09b86705443301c07000000000000000d22384d62788d9a9c998974604b36200b00000000000000091e32455772879db2ac97826c57422d1700001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000006192c3c576c8297aca7927d67523d28120000000000000000000000000012273d52677c92abac97826d573d2c1a060000000000000000000002172c41576c8196acbba5907b66503b26110013293e53687e93a8b7a28c7770859ba9a9a9a9a9a9aaaaadb0b4b0aaa39b908275615846332212000000000000000010202e373a424242424242423a596e8399aeaa8f7a644f4242424242424254697e93a9a9947f6a5442424242424035302618080000192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00152a3f556a7f94aab6a08b76614b36210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000e23394e63788ea6b7a7927d67523d271200000000000012273c52677c91abb8a68e79634e39240e000000152b40556a8095a8a8a8a8a8b0b5c1c5b8b3a8a8a8a8a8a8a8947f69543f2a1400091d31455672879cb1ad97826d5836251300000000000000000b2035485a677d8586847b655645311d090000000000000003162839596f8499aeb09a85705b39281603001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000000012273c52677c91abad98826d583d2d1a070000000000000000000000061a2c3d586d8297adab927c67523d2712000000000000000000000002172d42576c8297acbba6917b66513c26110013293e53687e93a8b7a28c7770859ba8a8a8a8a8a8a7a6a5a89e9b958e867b6e6057463a291704000000000000000002101b22242c2d2d2d2d2d2d3f556a7f94aaa8937e69533e2d2d2d2d2d3a4f647a8faaae98836e593b2a2d2d2d2a201c1408000000192e43586e8398adb29c87725d47321d08000000000000000003182e43586d8398adb29d88725d48331d00142a3f54697f94a9b6a18c76614c37210c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000013253653687e93a8b6a48c77624c37220d0000000000000c22374c61778b9fb5a8937e695336251300000011263b51667c9093939393939ba3b5b8a79e939393939393938f7b65503a2510000b20364b60758a9fafab947e69543f2914000000000000000005192b3c4d5f676f716f655d4b382715020000000000000000162b40566b8095abaf9e89735745321e09001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000000000000000c21374c61778b9fb39d88735b4a36210c00000000000000000000000c2135495b73889db29f8b77614c37220c000000000000000000000003182d43586d8298adbca7917c67523c27120013293e53687e93a8b7a28c776c819293939393939392918f8d8986807971655d4b4539291b0b0000000000000000000000070d0f171818181818263b50657b90a5ad98826d58392916181821364b60768a9fb29d88725947341f1818150b080100000000192e43586e8398adb29c87725d47321d00000000000000000000182e43586d8398adb29d88725d48331d0013283e53687d93a8b7a28c77624d37220d00060606060606060606060606060606060000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000071c3043546e8398aeb19c8771594834200b0000000000000a1f33475871869cb1ae99836e5443301c0700000f24384c5e667c7e7e7e7e7e859bb0b39e897e7e7e7e7e7e7e7b655d4b37230e000d22384d62788d989a988d7a644f39240f0000000000000000000e1e31414d525a5c59504b3f2e1a0a00000000000000000010253b50657b90989a988c76604b36210b001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000000000000000a1f33475871869bb0a68e79634e39230e00000000000000000000000e23384e63788da6b19b86715947341f0b000000000000000000000004192e43596e8398aebda7927d68523d28130013293e53687e93a8b7a28c7762757d7e7e7e7e7e7d7c7b7a7874706b635b504b3f32281b0b00000000000000000000000000000002020202020c21374c61768ca5b19c87715746321e0a091e32455671869cb1a58c77614c37220c020000000000000000182d43586d8298adb29c87725d3f2e1c110b0902000500050b0d18293a586d8398adb29c87725d47321d0012273d52677c92a7c9a48f7a644f3a25161b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b14120c0300000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000b20354a6074889eb3ac96816c573b2b180500000000000004182a3a566c8196abb39e8974604a35200b0000091d2f404c5e66686868686e8398adb29d8772686868686868655e4c3f2e1c08000b2034485a687d8384827c665c4a36220d000000000000000000001323313a3d4547443a372e2111000000000000000000000e23374b5d667c8384837d675745321e09001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000000004172a3a566b8095aba9937e6954382715020000000000000000000115273753697e93a8ab96806b563b2a18040000000000000000000000041a2f44596f8499aebda8937e68533e29130013293e53687e93a8b7a28c77626067686868686868676665626054554e4a3d382f1e160a0000000000000000000000000000000000000000000a1f33475872879db29f8b76614b36210c03162838586d8297ada6907b66513b2611000000000000000000172c41576c8196acb49e89745d4b3a2f24201d151b1b1b1820222b3446586f849aafb09b85705b46311b0010253a4f657a8fabbca8937d68533f322830303030303030303030303030303030302927201407000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000e24394e63798ea6b8ab917c66513c2711000000000000000011263c51667b91aab8a78e79644e39240f00000012222f404c51535353586e8398adb29d88725d5353535353504c402f2111000005192b3c4e60686e6f6d665e4c3e2d1b070000000000000000000005131e252830312f25231c110300000000000000000000081c2f3f4c5e666d6f6e675f4d39281603001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000000000000000010253b50657a90a9ae99846f5645311d09000000000000000000081d3144556e8499aea9907b65503b2610000000000000000000000000051a2f455a6f849aafbea9947e69543f29140013293e53687e93a8b7a28c77624d525353535353535251504d4a433639362d231c11030000000000000000000000000000000000000000000004172a3a596e8398aeab8f7a65503a25100013293e53687e93a8aa957f6a55402a1500000000000000000013293e53687e93a8b9a88f7a65584c3f393632283030312b34373b484d6176899eb3ad98826d58432d18000c21364b61768b9fb5af99846f5d4b453945454545454545454545454545454545453f3b322514000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000013253653697e93a8b49f8b76614c37210c00000000000000000c21364c61768b9fb4a9937e69543626140100000412222f383b3e3e43586e8398adb29d88725d483e3e3e3e3b382f2111030000000d1d31414e52595a58504c402f2010000000000000000000000000010a10121a1c1a100e080000000000000000000000000011212f404c51585a58524d41301b0a00001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000000000b20364b60758a9fb49e8975604b36200b0000000000000000000b20354b6075899eb49f8a75604b36210b000000000000000000000000061b30455b70859ab0bfa9947f6a543f2a150013293e53687e93a8b7a28c77624d3d3e3e3e3e3e3e3d3c3a3835302524211a0f0800000000000000000000000000000000000000000000000000142a3f54697f94a9a9947e69543f2914000f243a4f64798faaae99846f593b2b190500000000000000000e23384d63788da2b3b19c8676655d544f4b45384545463b484d5259626e8297a8b8a7927d67523d2812000a1e33465772879cb1b3a18f7b6860575b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b544f43321c0c0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000071c3043546e8399aeb09b86715847331f0a00000000000000000a1e33465770859bb0ae99846e5443301c0800000004121d2426292e43586e8398adb29d88725d483329292926231c110300000000001323313a3d4345433b382f22110200000000000000000000000000000000050704000000000000000000000000000000000312222f383c4345433c393023120000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000000000000000000000000000091d3245566f849aafa88f7a65503a251000000000000000000010253a4f657a8fa8af9a846f5645321e09000000000000000000000000061c31465b71869bb0bfaa95806a55402b150013293e53687e93a8b7a28c77624d3729292929292827262523201c130e0c0700000000000000000000000000000000000000000000000000000010253b50657a90abad98836e583a2917040b20364b60758a9fb39d8873594834200b00000000000000000c2035495a6f849aaab5a49c877b71696460565c5b5a5b5c5962676d778397a0b1b39e8975614b36210c0003172939556a7f95aabbb39e8a7e767170707070707070707070707070707070707069614f3a29170400000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000b20354a6074899eb3ab96806b563a2a1704000000000000000003172939566b8095abb39e8974604b35200b0000000000090f11192e43586e8398adb29d88725d48331d1313100e090000000000000005131e25282e2f2d26231c11040000000000000000000000000000000000000000000000000000000000000000000000000004121d24262e2f2e27251d12050000001a2f445a6f8499afb09b86715b46311c0000000000000003192e43586e8398adb29d88725d48331d080000000000000000000000000000000000000000000000000215283854697f94a9aa95806b553a2917040000000000000003172939556a8095aaa9947f6a5438281603000000000000000000000000071c32475c71879cb1c0ab96806b56412b160013293e53687e93a8b7a28c77624d372213131313131211100d0b07000000000000000000000000000000000000000000000000000000000000000c21364c61768b9fb29c87725847331f0a091d32455671869bb1a68c77624d37220d000000000000000006192c3c4e647a8b9fb4b5a59c90867f797573717070707174777c838b99a1b1b2a1937e695746321e0900000d22384d62788b9fb4b9a89e938a878585858585858585858585858585858585857f695846331f0a00000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000f24394e64798ea7b8aa907b66503b26110000000000000000000010263b50657b90a9b9a78e79644f39240f0000000000000003192e43586e8398adb29d88725d48331d08000000000000000000000000010b1113191a18110f090000000000000000000000000000000000000000000000000000000000000000000000000000000000090f11181a1912100a01000000001a2f445a6f8499afb09b86715b46311c0000000000040a0c192e43586e8398adb29d88725d48331d1414140e0c0700000000000000000000000000000000000000000f24394e64798ea6b09b85705846331f0a000000000000000a1e33465770859bb0a78e79644f39240f00000000000000000000000000081d32485d72879db2c1ac96816c57412c170013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000000000000000000000000000000000a1f33465872879cb1a58c76614c37210c02152838576c8297aca6917c66513c27110000000000000000000e21364a5c687e939faab4b2a39b948e8b888685858687898c91989faab3b3a0988372604a3928160300000b2035485a6a7f94a0b3b8b3a99f9c9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8b76614c36210c00000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000014293f54697e94a9b49f8a76614b36210c000000000000000000000b21364b60758a9fb4a9947f69543f2a140000000000000003192e43586e8398adb29d88725d48331d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c000000000c171f21282e43586e8398adb29d88725d48332929292924211a0f010000000000000000000000000000000000000b20354a6074889eb39f8b76614c36210c000000000000000c21364c61768a9fb39e8874604a35200b00000000000000000000000000091e33485e73889db3c2ac97826d57422d180013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000000000000000000000000000000000417293a586d8398ada5907b65503b26100013283e53687d93a8aa95806b55402b16000000000000000000071a2d3e4e60687e8b9aa2aeb4b1a9ab9f9d9b9a9a9b9c9ea8a7adb4b1a69d928274605443301b0b00000005192b3c4b607382939ea6acb1b3b1b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0aa8e78634e39230e00000000000000000000000000000000000000000000000013293e53687e93a8c2a28c77624d37220d0004192f44596e8499a7aa9a85705746321e0a00000000000000000000091e32455670859aaaa799846f59442f1a0000000000000003182d42586d82979fa59c86715c47321c0700000000000000000000000000030a0c10110f0b08010000000000000000000000000000040a0c10110f0b08010000000000000000000000000000040a0c11110f0b08010000000000000000001a2f445a6f8399a7a79b85705b46311b0000000c1c2933363e3e43586e8398adb29d88725d483e3e3e3e3e39362d1f0f000000000000000000000000000000000000071c3043546d8398adaa917c66513c27110000000000000011263c51667c91aaad98836e5443301c0700000000000000000000000000091f34495e74899eb3c2ad98826d58432d180013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000000000000000000000000000000000014293f54697e94a9aa947f6a553f2a15000f24394e64798ea7af9a846f5a452f1a050000000000000000000f2031424e60687a8490999fa9abaeb2b2b1b0afb0b1b3b0ada9a49c94887d6e60564536251300000000000e1d314455606d7e8892979c9e9faba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a28c77624d37220d00000000000000000000000000000000000000000000000013283e53687d93a9a8a48c77624d37220d0004192f44596e839092918b7c665139291603000000000000000000000316283851667c8c919290836e59442f1900000000000000000f24394f647a868a8b877d67523c2712000000000000000000000000000b171e21262725201d14090000000000000000000000000b171f21262725201c14080000000000000000000000000c171f21262724201c14080000000000000000142a3f54697f8e92928f806b56402b1600000417293a464c535454586e8398adb29d88725d5454545454544e4a3d2d190900000000000000000000000000000000000013253652687d92a7ac97816c573c2b1906000000000005192b3c576c8196aca8927d68533625130000000000000000000000000000081c304354748a9fb4c3ae98836e59432e190013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000f24394f647a8e9ea799836e59442e19040b20364b6074899da69e89735e49341e0900000000000000000001142431424e5c64707b838a9195999d9e9faba1aa9f9e9b97948e867f7568604b4538271808000000000001152737444b6169757d8287898a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b836f594834200b0000000000000000000000000000000000000000000000000e24394e63798b9192908673604b35200b00000b20364b60747b7d7c77665e4c381b0b0000000000000000000000000a24394c5e66787c7d7b74604b36200b00000000000000000d22364a5c6471757572675f4d3925100000000000000000000000010f1b2933363b3c3a3531261909000000000000000000010f1b2933363b3c3a353026180800000000000000000002101c2933373b3c3a35302618080000000000000012273b4f6169797c7d7a6b62513d291400000a1f33465861686969696e8398adb29d877269696969696969635b4a3727150200000000000000000000000000000000000d22374d62778ca4b29c87725a4935200b00000000000b2034485a72879cb1a48d78624d38220d00000000000000000000000000000b20354b60748aa9bac4ae99846f59442f1a0013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22364a5c6a80898c8b7f69543f291400081d314455677d878b8b826e59432e190400000000000000000000061424313e4a4f5e666e767c808487898a8b8c8b8a8986827e79716a61574e4231271a0a0000000000000009192731424f5660676d7174757676767676767676767676767676767676766f65543b2b18050000000000000000000000000000000000000000000000000c21364a5b63777c7d7b74605443301c080000091d3245566065686762594c402f1c00000000000000000000000000091d30404c5a62676865605645321d090000000000000000071b2d3e4a4f55606056524d41301e0a00000000000000000000000f1f2c39464c50514f4b443726180800000000000000000f1f2d3a464c50514f4b4336261401000000000000000010202d3a474c50514f4b43362614010000000000000c2032434f5c646767645c514433210e00000c21364c61767e7e7e7e7e859bb1b39e897e7e7e7e7e7e7e7e79635544311d0800000000000000000000000000000000000b2034485972879cb1a58d78624d38230d00000000000d22384d62778da4b29c87725a4835200b00000000000000000000000000000b21364b60768ba0b5c4af9a856f5a45301a0013293e53687e93a8bca28c77624d37220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2d3e50616a74767569614f3b271200021527374d5f677376766e6453402b170200000000000000000000000614202d36404c505761676b6f7274757676757473706d69635b554b4639311d150a00000000000000000009151d3238454b52575c5460616161616161616161616161616161616161575447371d0d00000000000000000000000000000000000000000000000000071a2d3d4a596267686660564536261401000002152838454b5052524d483b2f221200000000000000000000000000001222303c484d5252504b453828150200000000000000000010202d3637444b4b4538393023130100000000000000000000061a2c3d49576165666460554436251300000000000000071a2d3d4a5861656664605443301c0c00000000000000071b2d3e4a5861666664605443301c0b000000000000031425323d4a4e52524f4a3e332616040000182d42586d8293939393939ba3b5b8a79e93939393939393938974604b36200b000000000000000000000000000000000005192b3b576c8196aca8937d6853362614010000000013253653687d92a8ac97816c573c2b190500000000000000000000000000000c21374c61768cabb8c3b09b85705b46301b0013283d53687d92a4ab9f8c77614c37220c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000102033435054606160564f43321f0c0000091930414d525761615753463624100000000000000000000000000002101b222f3839464b5156595d5460616160565e5b58544e4a3d3632291b1302000000000000000000000001141a2832363d4236434b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c46393729190000000000000000000000000000000000000000000000000000000f1f2d3b474c5153504b4538281808000000000a1a2832363b3d3c37342b1d1204000000000000000000000000000004121d2b34383c3d3b3632281a0a0000000000000000000002101b22273135363228251e130500000000000000000000000c2135495b63767b7c7a73605443301c070000000000000c21364a5b63767b7c7a73604b3b2a18040000000000000d22364a5c64767b7c7a73604b3929170300000000000007141f2d36393d3d3a362d2016080000001c31475c71869ca9a9a9a9b1b5c1c5b8b3a9a9a9a9a9a9a9a78d78634d38230e00000000000000000000000000000000000011263c51667b91aaae98836e5443301c08000000071c3043546e8398adaa917c66513c27110000000000000000000000000000000c21364c61768c9ea7a4a599846f5a442f1a000d22374d6278868d8e8b826e5947341f0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000215253336434a4c4b4538322414030000001223303939464c4b46393628180700000000000000000000000000000007121c232933363c404436434b4b4c4b453846423f39362d211e160b0000000000000000000000000000000a161e21282d26303536363636363636363636363636363636363633291b190b000000000000000000000000000000000000000000000000000000010f1d2a34373c3d3b3632281a0a0000000000000a151d202628272220180d0000000000000000000000000000000000000d192022272826201d150a000000000000000000000000000709151d20201d150a0a010000000000000000000000000e23394e63798a90918f8572604a35200b0000000000000e24394e63798a90918f85705947341f0b0000000000000f24394e647a8a90918f84705746331e0a00000000000000010f1a2124272824221b1002000000001c31475c71869ca8a8a8a8b0b5c1c5b8b3a8a8a8a8a8a8a8a68d78634d38230e0000000000000000000000000000000000000c21364b61768a9fb39e8974604b35200b0000000b20354a6074889eb39f8b76614c36210c0000000000000000000000000000000a1e334657697f898d8f8d877a644f3a250f000b2034485962737879776e64533b2a18040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071518253035373631271a14060000000005121d252933363632281b180a000000000000000000000000000000000000090b171e21272b2f2630353637363228312d2924211a0f0a03000000000000000000000000000000000002090b1218141c202121212121212121212121212121212121211e170b000000000000000000000000000000000000000000000000000000000000000d181f22272826211e160a000000000000000002090b1013120d0b050000000000000000000000000000000000000000050b0d1213100b09020000000000000000000000000000000001080b0b090200000000000000000000000000000013283e53687d93a8a6a38c77624d37220d00000000000014293e54697e93a8a6a38c77614c37220c00000000000014293f54697e94a8a6a28b76614c36210c000000000000000000070d0f12120f0d07000000000000182d42576d8192939393939ba3b5b8a79e93939393939393938874604b35200b0000000000000000000000000000000000000a1e33465770859ab0a78e79644f39240f0000000f24394e64798ea6b09b85705846331f0a000000000000000000000000000000031729394f61697478797872645c4b37220d0005192b3b485460626361595346361d0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008131c2021201d150a00000000000000010a0b171e21211e160b00000000000000000000000000000000000000000000030a0c12161a141c202121201d151b18140e0c070000000000000000000000000000000000000000000000000001080b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0a03000000000000000000000000000000000000000000000000000000000000000000050b0d1213110b090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8c1a28c77624d37220d00000000000014293e54697e93a9c1a18c77624c37220d000000000000142a3f54697f94a9c0a18b76614c36210c00000000000000000000000000000000000000000000000c21364b61757d7e7e7e7e859bb0b39e897e7e7e7e7e7e7e7d79635544311d0800000000000000000000000000000000000003172939556a7f95aaa9947f6a5439281603000216283854697f94a9aa95806a553a291704000000000000000000000000000000000b1b32434f55606364625a4f4b3e2e1b0800000d1d2b36434a4d4e4c473a3628180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b0c0b09020000000000000000000000030a0c0c0903000000000000000000000000000000000000000000000000000000010001080b0c0c0b0902000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b080100000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000000000000050b0d0c0a0400000000000000000000000a1e33465761686868686e8398adb29d877268686868686868635b4937271501000000000000000000000000000000000000000f253a4f647a8fa8af9a856f5745321e0900091e3245566f849aafa88f7a654f3a251000000000000000000000000000000000000014253237444b4e4f4d483c372e2010000000000d18253035383937342a1c180a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000000000000000000000000000000000000000001080b0f11100c0903000000000000000000000000000000000000000002090b10110f0b080100000000000000000b171e21262725201d1409000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00000000080d182022211f170b0000000000000000000003172939464b525353586e8398adb29d88725d5353535353534e493d2c190900000000000000000000000000000000000000000b20354b6075899eb39f8a76604b36210b000b21364b60758a9fb49e8975604b36200b000000000000000000000000000000000000071419263135383a38352b221b1002000000000008131c202324221f180c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000070b0b0801000501000000000000000000000000000000000000000000000000000000000000000000040000070b0b080100050100000000000000000000000000000000000000000b171e21262725201d140900000000000000000000000000000000000000000000000000000000000008141c20242726211e160b0000000000000000000000000000000000000a151d20252725201d14090000000000010f1b2933363b3c3a35312619090000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000002101b222b34373633291b0b000000000000000000000b1b2933363d3e43586e8398adb29d88725d483e3e3e3e3e38352c1f0f000000000000000000000000000000000000000000081d3144556e8499aea9907b66503b26110010263b50657b90a9ae99846f5544311d08000000000000000000000000000000000000000009141d2023242220190e08000000000000000000070b0d0e0c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b1115191c131c20201d141d1a16130d0b0500000000000000000000000000000000000000000000000002090b1115191c131c20201d141d1a16130d0b050000000000000000000000000000010f1b2933363b3c3a35312619090000000000000000000000000000000000000000000000000000000008182630353a3c3b3632281b0e000000000000000000000000000000000c1a2832363b3c3a3531261909000000000f1f2c39464c50514f4b443726180800000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000010202e373b484d4c463a291b0b000000000000000000000b171e21282d43586d8298adb29d88725d3b2b2929292823211a0f010000000000000000000000000000000000000000000115273753697e93a8ab96816b56412c1600162b41566b8096aba9937e69543727150200000000000000000000000000000000000000000001080b0e0f0d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080a161e21262a2e32253035353126322f2c282220190d090200000000000000000000000000000000000000080a161e21262a2e32253035353126322f2c282220190d090200000000000000000000000f1f2c39464c50514f4b4437261808000000000000000000000000000000000000000000000000000001142636434b4f51504b46392b1e0e00000000000000000000000000000c1c2a38454b50514f4b44372614010000061a2c3d49576165666460554436251300000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00081b2e3e4b4f59626158463a29170400000000000000000000030a0c172c41566c8196abb39e8973594834211e161817171713110b0200000000000000000000000000000000000000000e23384d63788d9fa59b86715c46311c001c31465b71869ba59f8d79634e38230e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b08010000000000000000000000000000000000000000020304020100000000000000000000000000000000000000000006111c232832363b40434748434a4b44494744413d37342b211e160a0000000000000000000000000000000006111c232832363b40434748434a4b44494744413d37342b211e160a000000000000000000061a2c3d4957616566646055443625130000000000000000000000000000000000000000000000000000081c304354606466656157483c2b190600000000000000000000000004172a3a475660656664605544311d0800000c2135495b63767b7c7a73605443301c07000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000d22374b5c64717776615846331f0a00000000000000000000000000152a3f546a7f94a9b8a78c77624d413632282e2d2d2d28261f1406000000000000000000000000000000000000000c2135495b6c818d908f85705b46311b001b30465b70848f908d816c5b4935210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000608141c201c14080600000000000000000000000000040a0c11151718191816140f0b09020000000000000000000000000000000e19202e3738454b5155595c5e546060555e5d5a56524d483b3632281a1303000000000000000000000000000e19202e3738454b5155595c5e546060555e5d5a56524d483b3632281a1303000000000000000c2135495b63767b7c7a73605443301c07000000000000000000000000000000000000000000000000000b20354b6073797c7b75625a4835200b0000000000000000000000000a1f33475861747b7c7a73604b35200b00000e23394e63798a90918f8572604a35200b000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000f253a4f647b858c8976614c36210c0000000000000000000000000010253a50657a8fa7b8ab96806b60514b4538434242423e3a3124140100000000000000000000000000000000000006192c3c52636c787b7a74604b36210b000b20364b60747a7b786c63523d2c1a060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a21263035302621190e00000000000000000001080c171f21272a2d2e2e2d2c2925211e160a07000000000000000000000004121e2c353f4b4f5660666a6e71737475757473726f6b686259544b4538311e160a0000000000000000000004121e2c353f4b4f5660666a6e71737475757473726f6b686259544b4538311e160a0000000000000e23394e63798a90918f8572604a35200b00000000000000000000000000000000000000000000000000182d43586d828f91908878624d38230e0000000000000000000000000c21374c61768790918f836e59442f19040013283e53687d93a8a6a38c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c001d32475c72879ba3937d68533a2a17040000000000000000000000000b20354b6074899eb3b49f8d7e6f6660565958575757534e42311f0f000000000000000000000000000000000000000e1e3545525a626665605645321e0900091d314556606566625a5245341f0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2c3636434b4336352c1e0e0000000000000008141c202a33373c3f42434342413e3a363228211a0f0100000000000000000312222f3c494d5d656e757b7f838788898a8a89888784817d77706960564e4132281b0a00000000000000000312222f3c494d5d656e757b7f838788898a8a89888784817d77706960564e4132281b0a000000000013283e53687d93a8a6a38c77624d37220d00000000000000000000000000000000000000000000000000192e43586e8398a6a695806b563c2c1906000000000000000000000417293a54697e93a5a69a856f5a45301a050013293e53687e93a8c1a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00182d42586d8297ad9a85705847331f0a000000000000000000000000081d3144556b8095a6b7ab9f92847b76716e6d6c6c6c68604e3d2d1a07000000000000000000000000000000000000001727353c494d50504b45382816020002152738454b4f504d483c342717010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d494e5460544d493c2c190600000000000d182630353a474c51555758595756544f4b4538362d1f15070000000000000011222f404c5a636e7a83899095989c9d9e9fa99f9e9c9996928b857e75685f4b45392819090000000000000011222f404c5a636e7a83899095989c9d9e9fa99f9e9c9996928b857e75685f4b45392819090000000013293e53687e93a8c1a28c77624d37220d0000000000000000000000000000000000000000000000000012283d52677d92abb19c86715a4935200c000000000000000000000a1f3346586f859aafa9947e69543f2914000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0010253a50657a8fa59f8b77614c37210c000000000000000000000000011527374b6175889da7b6b4a19a908a8684838282827e685b4a36210c0000000000000000000000000000000000000009171e2c35383b3a3632281a0a0000000a1a2731363a3b38352b1e17090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2136495b63727571635b4935210c000000000d1d2b36434b515861666a6c6d6e6d6b696460564e4a3d3225160800000000000c1c2f404c5e6678838f989ea8aaaeb1b3b2b1b1b1b3b2afabab9f9b93877d6e6057453727150200000000000c1c2f404c5e6678838f989ea8aaaeb1b3b2b1b1b1b3b2afabab9f9b93877d6e6057453727150200000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000c22374c61778b9fb4a48d78624d38230d000000000000000000000c21364c61768b9fb4a58d78634e38230e000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000e23374b5d72879caa917c67513c271200000000000000000000000000091e324657647a899ca4b3b3afa99f9c99989797978e79634e39240e0000000000000000000000000000000000000000000e1920232625211e160a00000000000a151d2025262320190e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e6379878a8579634d38230e0000000b1b2b3c4854606770777c7f82838382817e7a756d635b4f433426160300000004182a3a4c5e667c8a99a1adb4b2aaa5a79e9c9c9b9c9d9faba8aeb4b0a69d928375605544311d0e0000000004182a3a4c5e667c8a99a1adb4b2aaa5a79e9c9c9b9c9d9faba8aeb4b0a69d928375605544311d0e00000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000a1f34475970859bb0a9937e69543a29170400000000000000000114263752677c91aab29c87725b4935210c000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00081c2e3f566b8095ab96816c56412c1700000000000000000000000000031629394a5c647a86949da6abafb3b1aeadacaca6917c67513c271200000000000000000000000000000000000000000000060c0d11100b09020000000000000002090b10110d0b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c52677c919f98826d583a2a18040003172939485a62737c858b91949798989796938f8a82796a6151443421110000000a1f344759667c8c9ea8b3b3a59c958f8b8987868687888b8e93999faab2b2a1998473604b3c2b19050000000a1f344759667c8c9ea8b3b3a59c958f8b8987868687888b8e93999faab2b2a1998473604b3c2b1905000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000004182a3a556a7f95aaaf9a846f5846331f0a0000000000000000081d3144556d8398adab96816c563d2c1a06000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00071b2d3e53687d92a89a856f5a45301a00000000000000000000000000000b1b2d3e4a5c64747f8890969a9ea7a2a3a4a4a7917b66513c26110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384e63788da79d87725847331f0a000a1e334657627885919a9fabaaaaa9a8a9aba9a99f978d7f6c62513f2e1c0800021527374c6177899eaab8a79e9287807a7673727171727375787d838c99a1b0b3a295806b5a4835200b0000021527374c6177899eaab8a79e9287807a7673727171727375787d838c99a1b0b3a295806b5a4835200b000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000f24394f64798ea6b49f8a76614c36210c00000000000000000b20354b6074899eb3a8907b65503b261000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000d22364a5c6c8196ac9c87715c47321c00000000000000000000000000000010202d3d4a556069747a8185898c8d8e8f8f8f8976614c37210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d0f181d1a0d0b05000000000000000000000000000000000000000000000000000000000000070b0b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a6074899ea58c77614c37220c011426374b6175879ba2b0a69d9895949394969a9fa9ab9f94806c5d4b37230e00081d3144556c8196a7b8a79e897d736a6561585d5c5c5c566063686e7883969eb0b49f8b78624d38220d0000081d3144556c8196a7b8a79e897d736a6561585d5c5c5c566063686e7883969eb0b49f8b78624d38220d000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000b20354a6074889db3aa917c6752372614010000000000000010253a50657a8fa7b49e8975604b36200b00000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000f24394f64798c9fb29c87725d47321d00000000000000000000000000000002101f2d37444b5460656c70737678797a7a7a77625847331f0a0000000000000000000000000000000000000000000000000000000000000000000000000000000002101b22242d3230221f180d00000000000000000000000000000000000000000000000000010a08131c20201c1308090000000000000000000000000000000000000000000000000000000000000000000000000000071c3043546f849aa5907b66503b2611081d3144556b8196a5a79e908883807e7e7f80858a949faa9e8f7b65503a2510000b20364b6075899eb3b39e8979676054504c463a474638454b4e535a626e8096a5b6aa95806a55402b1500000b20364b6075899eb3b39e8979676054504c463a474638454b4e535a626e8096a5b6aa95806a55402b15000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000071c3043546d8297acad98826d5544311d08000000000000061a2c3d566b8196abae99836e5645321d0900000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c001b30465b70859baab29c87725d47321d00000000000000000000000000000000010f19273136434b50565a586162636465656259473a2a17040000000000000000000000000000000000000000000000000000000000000000000000000000000715202d363942474537342a1d0d000000000000000000000000000000000000000000000005131e25253035353025231c110400000000000000000000000000000000000000000000000000000000000000000000000000132536566b8095aa957f6a55402a150b20354b6074889eb39e897c736e6b69686a6b6f757f8c9fad98836e58432e190010253a4f657a8fa7b9a9937e695b4a43363633293131283236393c484d6073879cb2b09b86705b382715020010253a4f657a8fa7b9a9937e695b4a43363633293131283236393c484d6073879cb2b09b86705b382715020013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000013253651667c91a9b39e8974604b35200b0000000000000c2135495b72879cb1a8937d68533828150200000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c001f354a5f748b9fb4b29c87725d47321d00000000000000000000000000000000000009151d2630353b413a474c4d4e4f4f4f4c473b2a1c0c000000000000000000000000000000000000000000000000000000000000000000000000000000031525323e4a4f575c5a4c483b2a1808000000000000000000000000000000000000000000011323313a36434a4a4336382f22110000000000000000000000000000000000000000000000000000000000000000000000000011273c51667c91a699846f593c2b190d23384d62788da6a8937e685e58555453545656606d8297ac9d88735d48331e0013283e53687d93a8c5a28d78624d3d3025211f171c1c151d20232b3444556c8196abb49e89745645311d090013283e53687d93a8c5a28d78624d3d3025211f171c1c151d20232b3444556c8196abb49e89745645311d090013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000c21364b61768a9fb4a78f7a654f3a25100000000000000e23384e63788da4b5a38c77624d37220d0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0020354a60758aa9bab29c87725d47321d000000000000000000000000000000000000000208141c20252c2a333738393a3a3a37342a1d0d000000000000000000000000000000000000000000000000000000000000000000000000000000000c2032434f5c646d726f6259483625130000000000000000000000000000000000000000000a1e31414d5254606054504c402f1c090000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778ca69e88735a4835200f253a4f647a8fa4a48f7a654f40403f3e3f384553697e93a89f8a745f4a351f00152a3f546a7f94a9b6a08b76614b3621130c0a04000002090b0e192637546a7f94a9b9a88b75604b36200b00152a3f546a7f94a9b6a08b76614b3621130c0a04000002090b0e192637546a7f94a9b9a88b75604b36200b0013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000a1e3346576f849aafab96806b563c2c1906000000000417293a54697e94a9b19b8671594834200b0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0020354a60758a9fb5b29c87725d47321d00000000000000000000000000000000000000000001080b1017171f212324252525221f180d000000000000000000000000000000000000000000000000000000000000000000000000000000000013273c4f616a7a82878477625443301c0c000000000000000000000000000000000000000010253a4d5f6772757571665e4c38230f0000000000000000000000000000000000000000000000000000000000000000000000000b2034485973889da68d78624d382210253a50657a8fa5a48f7a654f3a2b29292a283e53697e93a8aa8a75604a352000152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9c6a08b76614b36210c00152a3f556a7f94aab6a08b76614b36210c000000000000000000152a3f546a7f94a9c6a08b76614b36210c0013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000317293954697e94a9b19c87725a4935200c000000000a1f33475870859aafaa95806b553b2b18050000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0020354a60758a9fb5b29c87725d47321d0000000000000000000000000000000000000000000000000000040a0c0d0e0f10100d0b05000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f546a7f8d979c9a8472604a3a2a18040000000000000000000000000000000000000012283d52677d878a8a867c66503b261100000000000000000000000000000000000000000000000000000000000000000000000005182b3b596e8399a6917c67513c2712253a50657a8fa5a48f7a654f3a25141315293e53697e93a89f8a75604a352000152a3f556a7f94aac2a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c00152a3f556a7f94aac2a08b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c77624d37220d040404040302010000000000000000000000000000000000000000000e23384e63788da5b6a48d78634d38230e000000000c21374c61768b9fb4a78f7a644f3a250f000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0020354a60758aa9b9b29c87725d47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001d32475d72879cabb1a2937e685947341f0e0000000000000000000000000000000000000a1f34495f74899c9f9f9c86715c47311c07000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f94aa96806b56362614253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a352000152a3f556a7f94aba9a48b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c00152a3f556a7f94aba9a48b76614b36210c000000000000000000152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c77624d3722191919191918171614100c0a04000000000000000000000000000000000c2135495b72879cb2a9947e69543a29170400000115273752677c92aab39e8874604b35200b000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c001f344a5f748b9ea8a69c86715c47311c00000000000000000002080b0f10100f0e0d0b09030000000000000000000000000000000000000000000000000000000000000000030a0c0f0f0b090200000000000000000000000000000000000013293e53687e93a3b5b39e8977614c3c2b190600000000000000000000000000000000000b20354a60758aa8b4b29d88725d48331d0800000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90ab9a85705443301c253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a35200010263b50657b8d93949186715746321e09000000000000000000152a3f546a7f94a9b6a08b76614b36210c0010263b50657b8d93949186715746321e09000000000000000000152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c77624d372f2f2f2f2f2e2e2c2b2925211f170d0b0500000000000000000000000000061a2c3d566c8196abaf9a856f5846331f0a0000081d3144556e8398adad98826d5443301c08000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00152a3f546a7f898c8c887c67523d2712000000000000000009151d20252525252322211e16140d0b050000000000000000000000000000000000000000000000000000000b171e212424201d150a00000000000000000000000000000000000b20354b6073859babb8a796816c5a4835200c00000000000000000000000000000000000b20354a60758a9fc6b29d88725d48331d080000000000000000000000000000000000000000000000030001080b08010002000000000c21364c61768b9f9e8974604b3520253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000e23384c5e65797e7f7c76614c39281603000000000000000000152a3f546a7f94a9b6a08b76614b36210c000e23384c5e65797e7f7c76614c39281603000000000000000000152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c77624d434444444444444342413e3a3633292220180d0300000000000000000000000010263b50657b90a8b49f8b76614c36210c00000b20354b6074899eb3aa917c675236261401000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c0013273c4f616a75777774675f4d3925100000000000000009192731363a3a3a3a393836322829221f180d07000000000000000000000000000000000000000000000003111b2933363a393632281a0e00000000000000000000000000000000081c304354647a8d9fb5b49f8b78624d3a2a1704000000000000000000000000000000000b20354a60758a9fb5b29d88725d48331d0800000000000000000000000000000000000000050b0d13181c151d201d151b17120c0a030a1f33465872879ca88e79634e3923253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a352000091c2f404c5b63686967615746331b0b00000000000000000000152a3f546a7f94a9b6a08b76614b36210c00091c2f404c5b63686967615746331b0b00000000000000000000152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c77624e5859595959595958575653504c463a37342b1e160b00000000000000000000000b20364b6075899eb4aa917c6752392916030114263750657a90a7b49f8b76614c37210c00000000000013293e53687e93a8b7a28c77624d37220d0d0d0d0d0d0d0d0d0d0d0b09020000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000c2032434f5560626260544d41301e0a00000000000002152737444b4f50504f4e4d4b45383e37342a211a0f0100000000000000000000000000000000000000000011212f39464b4f4f4b45382c1e0e000000000000000000000000000000011426364a5c6d8298aabbaa97816c5847331f08000000000000000000000000000000000b20354a60758a9fb5b29d88725d48331d080000000000000000000000000000000000060d181f22282e312731353127312c28211e160b17293a586d8298a7927d68523d28253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000011212f3d4a4e5354524c463929170000000000000000050b0e192a3f546a7f94a9bcab8b76604b36210b000011212f3d4a4e5354524c463929170000000000000000000004152a3f546a7f94a9b6a08b76614b36210c0013293e53687e93a8b7a28c7762636d6e6e6e6e6e6e6d6c6b69656158544d483b32281b0e00000000000000000000091d3145566e8399aead98836e5746321e0f0f1d3144556c8196abb09a85705847331f0a00000000000013293e53687e93a8b7a28c77624d37232323232323232323232323201d150a00000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c000315253237444b4d4c4b433630231301000000000000081d31445560646565646362605659544c483b362d1f160000000000000000000000000000000000000000081c2f3f4b576164646056493c2c190600000000000000000000000000000008182e3e4d63788c9fb4b49f8a77614c362513000000000000000000000000000000000b20354a60758aa9b9b29d88725d48331d08000000000000000000000000000000000e19202a34373d434649444b443746423d3632291e17293e54697e93a997816c573828253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000003111f2d36393e3f3c3633291b0b00000001080b0f131920222b3542566b8095abb59f8a75604a35200b000003111f2d36393e3f3c3633291b0b00000000000001080b0f171f2838546a7f94a9baa98b75604b36200b0013293e53687e93a8b7a28c776379838484848484838381807e7a76716962594b46392c1e0f0100000000000000000215273853687d92aab49f8a76614b3b2b25242a394b6074889db3a9947f69543a29170400000000000013293e53687e93a8b7a28c77624d383838383838383838383838383632281a0b000000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9b6a18b76614c36210c00000715192731363737353026181305000000000000000b20364b60747a7a7a7a787776726e6962594e4a3d331c13080000000000000000000000000000000000000e23374b5d6576797974625a4935200c00000000000000000000000000000000102035495a6d8297aabaa9947f695443301c070000000000000000000000000000000a1f344a5f748a9ea8a79c87725c47321d07000000000000000000000000000004121e2b353b484c53585c5e5560555e5b57524b46393329253a4f647a8faa9b8671564532253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000010f1a2124292a27211e170b030a0c11141d2024292b35383c484d6070859bb0b29d88735443301c07000000010f1a2124292a27211e170b000000040a0c11141c202429333845566c8196acb49f8a745645321d090013293e53687e93a8b7a28c776e8398999999999999989796938f8b867f776b6157493c2c1f0f0000000000000000000c22374c61778b9fb4a8947e6959483b3a3a3a4757677c91a6b4a28d78634d38230e0000000000000013293e53687e93a8b7a28c77624d4d4d4d4d4d4d4d4d4d4d4d4d4d4b4538291b0b0000000000000013293e53687e93a8b7a28c77624d37220d00000000000014293e54697e93a9b7a18c77624c37220d000000000000142a3f54697f94a9c7a18b76614c36210c0000000009151d202222201c1408000000000000000000172c41576c818f8f8f8f8e8d8a87837e776f635b504430251808000000000000000000000000000000000010253b50657b8a8f8e8878624d38230d0000000000000000000000000000000006192c3c4d62788b9fb4b29c8773604a35200b00000000000000000000000000000000152a40556a7f898c8c897e68533d281300000000000000000000000000000012222f3c494d5962686d717475757473706c6761574b46392b364b60758a9f9f8a75604b36253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a35200000000000070c0e1314120c0a0c0e171e2126263135393e3c484d535a626d7e93a3b4ae99846f59362513000000000000070c0e1314120c0a03090b0f14181f2226263035393a464c566074879db2b19c87725c382815020013293e53687e93a8b7a28c7770869baeaeaeaeaeaeadacaba8a5a39b948a8075635b493d2c190900000000000000000a1f3347586e8399aeb39e89776259514f4f51586175879db2af9a85705a4935200c0000000000000013293e53687e93a8b7a28c776262626262626262626262626262626056463929170300000000000013283e53687d93a8b7a28c77624d37220d00000000000314293e54697e93a9b7a18c77624c37220d000000000003142a3f54697f94a9baa98b76614b36210c000000000002080b0d0d0b0801000000000000000000001d32475c72879ca5a5a4a3ab9f9c99938b84796b624a4336251300000000000000000000050b0b0b0b0b0b172c41566c8196a9a6927d68523d281300000000000000000000000000000000000e2035495a6e8399aeb6a4907b65503828150200000000000000000000000000000013283c50616a7577777468604e3a261100000000000000000000000000000e1e2f404c5a626d777d8386898a8a898886817d766b6157483c32455671869ba98f79644f3a253a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a352000000000000000000001080f1a21232933363b37444b4e53585a62686f7882939cadb7a6937e68533e281300000000000000000000050b0d12151d2024292a33373b36434b4e54586168748298a5b7ad97826d58422d18000013293e53687e93a8b7a28c776f859aa3a3a3a3a3a3a3a4a7a9aeb4b0a99f958779635b49372614010000000000000004182a3a50657b90a1b3a79b85786c676464666b76849aa5b4a2917c66513c2c19060000000000000013293e53687e93a8b9a48f7a78787878787878787878787878787874615746331e0a00000000000011273c51667c91a6c7a28d78634d38231a1614131415161e2a3a546a7f94a9b7a28d78624d38231a1614131415161e2a3b556a7f94aab49f89745746331e0a00000000000000000000000000000000000000000000001d33485d72889dacacacadafb2b2aeab9f998c806c605443301c0c00000000000000070b1a202020202020202c41576c8196aca8927d68533d281a150f0d070000000000000000000000000006192c3c50667b90a5b6ad98826d5645321d090000000000000000000000000000000d203343505560626260544e42311e0b0000000000000000000000000006192c3c4c5e6678828b92989b9e9fa99f9d9b9792898075625a483938576c8297a8937e69533e293a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000000000000008141c202c363939464c5055556064686d72787e848c979fadbaaa9d8875614b36210c00000000000000020b0e192022272731363a3e3a474c5155546064696f767e8798a0b2b4a2907b66503b2611000013293e53687e93a8b7a28c77697e8d8d8d8d8d8d8d8e8f9194999ea8b4b4a59d8879635544311d0800000000000000000c23374b5d6f849aa5b4a39b8a817c7a797c81889aa2b4a59a84705e4c381e0e000000000000000013293e53687e93a8bdaa988f8d8d8d8d8d8d8d8d8d8d8d8d8d8d8d8876614c36210c0000000000000f253a4f647a8fa9baa5907b665042362d2b2928292a28323a47596d8297adbaa5907b655041362d2b2928292a28323a47596d8298adb29d87725d3929170300000000000000000000000000000000000000000000001a2f445a6f8496969697989a9da6aab3b4aa9f958172604a3a2917040000000008131c2030353535353535353541576c8196aca8927d68533d322f2a24221b10070000000000000000000000000e20354a6073879cb2b39e8975604b36200b0000000000000000000000000000000315253337444b4d4c4b433631241302000000000000000000000000000c2035495a667c89989faaaca6a3a2a1a2a3a7aca79e9686786257463d53687d92a898826d5839293a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000000000010f182630353d494e555761666b6f75797e82878d939a9fabb1b5a89f8c7c665746321e0a00000000000006141f262b35383c38454b4f53585861666b6f74797e848a939da5b2b2a49a84705e4c38230f000013293e53687e93a8b7a28c77626978787878787878797a7c7f8489949fa9b7a69b8573604b35200e0000000000000000081c2e3f4c6177879aa2b4a89e97918f8f91969ea7b4a29a8777624c40301d00000000000000000013293e53687e93a8bdb7aaa4a2a2a2a2a2a2a2a2a2a2a2a2a2a2a6907b66503b26110000000000000c21364b61768a9fb4ad98826e604e4a3d403f3e3e3f39464b586177899eb3c2ad98826d604e4a3d403f3e3e3f39464b5862778a9eb4ae98836e59432e190000000000000000000000000000000000000000000000000e23384d6378818181828385888d949ea7b5b49f937e685847331f0a0000000818253035454a4a4a4a4a4a4a4a4a576c8196aca8927d68534947443f39362d221b100200000000000000000000071c3043546a7f94a9b9a8917b665137261401000000000000000000000000000000071519273136373735302618130600000000000000000000000000001325364d63788a9ea7a79e97918e8c8b8d8e92979ea8a49c8776614c394e63798ea89c87725746333a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000000002101f2c36434b525b636a70767b8085898e93989da5a8afb4b2ab9f998a7d675e4c392916030000000000071424313b3c484d5256566064696d72777b8084898e93999fa9b2b5afa1998677624d402f1c09000013293e53687e93a8b7a28c77625a626363636363636464676a6f767f8b9fa9b5a3937e69543c2c19060000000000000000111f3447596278849aa9b9b4aca6a4a4a6abb3b8aa9a847863594834221200000000000000000013293e53687e93a8bdc0b4afaeaeaeaeaeaeaeaeaeaeaeaeaeaea6917c67513c27120000000000000a1e3246576f8499aeb2a0937e6d635b5855545353545757616876849aa8b9c8b2a0927e6d635b5855545353545757616876849aa8b7a5917c67523c27120000000000000000000000000000000000000000000000000c2035495a636b6c6c6c6d6f73787f899ba3b5b39e8976614c37210c000000132536434a5a606060606060606060606c8196aca8927d685f5e5d59554f4a3e362d201204000000000000000000001325364d62788da3b5ad98826d5544311d08000000000000000000000000000000000009151d202222201c1408000000000000000000000000000000071c3043546d8297a8a49c89817c79777677797d828a9ca4a5957f6a55374b6075899e9f8b76614c363a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000000010202d3d4954606770797f858b90959a9ea8a8adb2b2aea8a59d968c8378675f4d402f1b0b000000000003142532424e535a62676c7075797e83878c90959a9ea7a9afb4b0ab9f9a8f837762594834221100000013293e53687e93a8b7a28c77624d4d4e4e4e4e4e4e4e4f525458616a7b8b9fb4b19b86715a4935200c00000000000000000b1b304150626b7c8a9fb4bab4b0aeaeb0b4bab49f8a7c6b625142311c0c00000000000000000013293e53687e93a8bdb4a29a9999999999999999999999999999998e7a644f39240f0000000000000316293950667b90a0b2ad9c938279726e6b6968696a6c6f767d879aa2b4b5b2b7ad9c928279726e6b6968696a6c70767d879aa2b4b29d8775604b36210b00000000000000000000000000000000000000000000000006192c3c494d56575757585a5a636a77859ba8b8a7937e68533e28130000071c304354606f75757575757575757575758196aca8927e757473726f6a645c4e4a3e2f221200000000000000000000082035495a71869bb0b39e8974604b35200b000000000000000000000000000000000a161e212d33332c201c130800000000000000000000000000000b20354a6072899eb19c86766c676362616264686d77869cb19c86715544445570859aab907a65503b3a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000000b1b2d3e4a5b63737c858e959b9faaaaafb4b0aba7a69d98938e8780796e625a4d413022120000000000000c2032434f606872787c81858a8f93989da5a6aaafb3b1acab9f9b948c847b6e6159483b2b180300000013293e53687e93a8b7a28c77624d38383838383838393a3c3a464c5c6b8095aab5a38d78634d38230e00000000000000031729394d5f6b80919fa9b4a99f9b98989a9fa8b4aa9f91806b604e3a2a1804000000000000000013293e53687e93a8bdaf9a84848484848484848484848484848484806a5c4a36220d000000000000000b23384c5e6e8398a3b3ada0988e8783807e7d7e7f81858a929da5b4ab9f9da6b3ada0988e8783807e7d7e7f81858a939da5b4b49d907c665745321e09000000000000000000000000000000000000000000000000000e1e2c353841414142433c494d5962778a9eb4ae99846f5937261401000b20354a6072848a8a8a8a8a8a8a8a8a8a8a969fb1ad9c928a8a8887847f796f645c4c402f1e0e00000000000000000006192b3c54697f94a9b9a78f7a644f3a240f0000000000000000000000000000000a1a283236424848413530251808000000000000000000000000000c22374c61778ca7a8927d6858514e4d4c4d4e5259697e93a89f8a75604b37566b8196a9947f6a543f3a50657a8fa5a48f7a654f3a25100014293e53697e93a89f8a75604a3520000000031629394a5c647985919ba3aab0b3aea9a99f9b96918d88837e79726b635b4d493c3023120400000000000012273b4f61697e878d91969b9fa9a8adb2b4afaaa6a49c97928b867f786f655d4c473a2b1d0d0000000013293e53687e93a8b7a28c77624d3723232323232324252729333e4e63798ea3c2a6907b66513b2611000000000000000a1e334657677d919eb4aa9f958a858383858a949fa9b49e927e685947341f0a000000000000000013293e53687e93a8b7a28c786f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6a61503e2d1b0700000000000000091c2f404c6176859aa1b2b2ada59d989594939394979a9fa9b2b4a79e8d889aa2b2b2ada59d989594939394979a9fa9b2b5a99f937f6a5e4c3928160300000000000000000000000000000000000000000000000000000e1920232c2c2c2d2e2c353b48596d8298adb39e88735544311d08000e24394e63798ea29f9f9f9f9f9f9f9f9f9facb1bdbaada8aa9f9e9c99948e847a665e4c3c2c19060000000000000000000e23384e63788da6b7a9947f6a54382815020000000000000000000000000002162838454b575e5d574a43362513000000000000000000000000000e23394e63788ea3a6917c66513a39373638393b52677c91a7ab8c76614c3c52677c91a799836e593b3a50657a8fa5a48f7a654f3a25100b14293e53697e93a89f8a75604a35200000000a1e324657647a899ba3b0b4b0a79e99948f8a85817c77736e69635b564e493d352b1e12040000000000000215273854697f939ca5a7abb0b4b1aca8a89e9a95918c87827d77716a625a504b3f342a1c0d000000000013293e53687e93a8b7a28c77624d37220e0e0e0e0e0f0f121721364c61768ba1b6a8937d68533e2813000000000000001325364b6176889eb3b49f8c8076706e6e70767f8b9fb4b39e8977614c382715020000000000000013293e53687e93a8b7a28c77625959595959595959595959595959555043332010000000000000000000111f334758617584919da5adb2b2adaaa9a8a8a9acafb4afa99f97897c7684929da5adb2b2adaaa9a8a8a9acafb4b0ab9f998b7e6a6150402f1b0a00000000000001080b101313100b0700000000000000000000000000060c0e161717171819202b3b54697f94a9b59f8a75604b35200b0010253a50657a8fa5b1b1b1b1b1b1b1b1b1b1b3b8c5c4b7b2b1b2b3b2aeaaa29a8a7c665a4935200e0000000000000000000c2135495b73889db2af9a846f5645321d0900000000000000000000000000091e324556606d73736c605443301c070000000000000000000000000e24394e63798ea3a6917c66513c27222122273c52677c91a7a18c77614c384d62788da79d887259483a50657a8fa5a48f7a654f3a25212021293e53697e93a8ab8a75604a35200000000c21364b6175879da7b5b0a39b9189837f7a75706c67625a59534e4a3d38352c20190e0000000000000000091d31455672879cb2b6b2aeab9f9c97928e8985807b77726d676259544d493c372e1f180c00000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000071c304354697e94a6b3a1937e6b615859595761697d91a0b2a895806b5645311d090000000000000013293e53687e93a8b7a28c77624d44444444444444444444444444403c332515020000000000000000000417293a4757616f7d8790989da5a4a6a7a8a8a6a5a89e9a948b82786661727d8791989da6a4a7a8a8a8a7a5a99f9b948c83786960504333221200000000000009151d2026282825201c1308000000000000000000000000000001020202000613293e53687e93a8bcab8c77624c37220d000d23384d62788d9c9c9c9c9c9c9c9c9c9c9c9ea7b8b7a69d9c9c9ea7adb2b4a89e8a78624d3c2b19060000000000000000061a2c3d586d8298adb49f8a75604b36200b000000000000000000000000000b21364b60748288888172604a35200b0000000000000000000000000e24394e63798ea3a6917c66513c27110c12273c52677c91a7a18c77614c37495a73889ea58c77624c3a50657a8fa5a48f7a654f3938363536383a53697e93a89f8a75604a3520000005182b3b546a7f94a5b7b09e95857c746e6965605656524d483c3e39362d23211a0f060000000000000000000b20364b60758a9fb5b2a098908b86827d79746f6b66615957524c473b38352b231c11040000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000b20354a6073879cb2af99846f604c463a39464b5f6d8298abb39e8875604b36200b0000000000000013293e53687e93a8b7a28c77624d372f2f2f2f2f2f2f2f2f2f2f2f2b2821150700000000000000000000000c1c2939464c5f67737b82878b8f9192939291908e89847f776d625a546068747c82888c8f9193939391908e89867f786e635a4f4233251504000000000009192731353b3e3e3a35302518080000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000b2035485a6b808687878787878787878786899eb3b29d888687898e98a0b1b9a899846f5a4935200b00000000000000000013283d52687d92a7baa98e79644f39240f0000000000000000000000000012273c52677c919d9d8d78634e38230e0000000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c373c5a6f8499a6917b66513c4e64798eaaa6907b6657514d4c4a4b4d50586a7f94aa9e88735e49331e00000b2034485972879cb1b4a3958072666055544f4b45383c38342b2923211a0f0c0600000000000000000000000c22374c61778cabbcae98827b76716d6863605455514c473a3d37342a2320190e0800000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000f253a4f647a8fa5b5a38f7a644f4233292932404d62788c9fb4a6917b66513727150100000000000013293e53687e93a8b7a28c77624d37221a1a1a1a1a1a1a1a1a1a1a15130d04000000000000000000000000000c1b2933414d5460656d72767a7b7d7e7d7c7a79746f6a62594d48434a5560666d73777a7c7d7e7d7c7b7875706a625a4d493c32241507000000000001152737444b5053534f4a433625130000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0006192b3c51626b71717171717171717171718196aca8927e717274798297a0b1b59f8c78624d38230d0000000000000000000e23384e63788da8baa8927d68533d28130000000000000000000000000013293e53687e93a8a48f79644f3a240f0000000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c3740556a8095aa95806b55404b61768a9faf9a84756b666261606162666b76879cb09b85705b46311b00000d22374d62778ca4b6b09b857060544b44373a36322827222019140e0c0a0c1213120d0b05000000000000000d22374c62778ca1b7a8937e69615757534e4b43363c37342a28221f180d0b06000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000071b2d3e566b8196abb19b86715c4a361f17162035495a6f849aafad98826d5544311d0800000000000013293e53687e93a8b7a28c77624d37220d040404040404040404040000000000000000000000000000000000000b171e3036434b5058586165666768686765636054554c483b353037444b5158596165676869686766636055554d483c352c1e1406000000000000081d3144556065686865605443301c0700000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000e1e344451565c5c5c5c5c5c5c5c5c5c6c8196aca8927d685d5b636e8297aabbab947f6a553f2a150000000000000000000b20354b6074899fb4ac96816c57412c170000000000000000000000000014293f54697e94a9a48f7a654f3a25100000000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c373b51667b90a699846f5a3c46576e8399a8a29a88807b78767576777b80889ca5a6947f6a543f2a15000011263b50667b90a5c2a8937d68534336312725211e16120d0b05000b171e212729282220180d0000000000000d22374c62778ca1b7a8937e695346393d3935302626221f18120d0b05000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000d22364a5c72879db2a9947f6a543e2e1b0406192c3c52687d92aab39e8974604b35200b00000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000000000313182630353b3a464c4f5152535351504e4b433637342a201c2731353c3b474c4f5253535352504e4b443738352b20190e00000000000000000b20354b60757b7d7d7a72604a35200b00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001626343d41474747474747474747576c8196aca8927d68534a4e62778b9fb4ae99846e59442f19000000000000000000081c30435470859bb0b09b85705b39291603000000000000000000000000152a3f546a7f94a9a5907a65503b25100000000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c37374c62778ca59e89735a49394e63798a9da6a69d96918d8b8a8b8d90969ea6a69d8876614c37210c000013283e53687d93a8b9a38e79644e39251d15100b0902000000000b1b2933363c3e3d37342b1d0f01000000000d22374c62778ca1b7a8937e69533e292824201c14110c0a0400000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000f24394e64798ea5b5a38d78634d38231000000e21374c61768a9fb4a7907b655036251300000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000000008141c20262933363a3c3d3e3d3c3b39353026221f180d09151d20262a34373a3c3e3e3e3c3b393531262320190e060000000000000000001a2f445a6f849093938f816c57412c1700000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000081621292c313232323232323241576c8196aca8927d68533d475970859aafb29d88725d38281603000000000000000001142636576c8297acb39e89735746321e0a000000000000000000000000152b40556a8095aaa5907b66503b26110000000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c3734475972889da78d78634d38495b647a88979ea8aba6a2a19fa0a2a5aba99f97887a645847331f0a0000152a3f546a7f94a9b6a18b76614c36210c01000000000000000a1a2939464c5153524d483b2c1f0f000000000d22374c62778ca1b7a8937e69533e29140e0b08010000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000006192c3c556a8095aab19b86715a4935200c00000a1f3347586f8499afac97816c5443301c07000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000000000000000001080b10171f212526282928272523201c140d0b05000001080b11181f222527282928272623201d140d0b06000000000000000000000020354a60758d9fa8a89c86725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000040e14161c1c1c1c1c1c1c2c41576c8196aca8927d68533d3b576c8196acb49f8a755645321e09000000000000000000142a3f54697f94a9b8a78b76614b36210c000000000000000000000001162b41566b8096aba6917b66513c26110b06000000000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c372a3b596e8398a7917c67523c3d4b5c6477818992969b9d9e9f9f9e9b97928a8177645c4b3a2a17040000152b40556a8095aab5a08b75604b36200b00000000000000021528384657616768676259493d2c1a060000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000c2135495b71869cb1aa947f6a553c2c190600000417293a53687d92aab29d8874604a35200b000000000013283e53687d93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000000000000000000000000040a0c101112131312100e0b0801000000000000000000040b0c101213141312110e0b0801000000000000000000000000000020354a60758aabbcb29c87725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000001070707070707172c41576c8196aca8927d68533d3f556a7f94aabbaa8b76604b36210b00000000000000000012273c52677c91a7c5a38e78634e39230e000000000000000000000002172c41576c8196aca6917c67513c2c2320190e0800000000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c372a3f54697f94a996816b56372e3e4b59626c767d818588898a8a8886827d766c62594b3e2e1c0c000000162b40556b8095aab59f8a755544311d0800000000000000091d32455661767c7e7d77635b4935210c0000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000e23384d63788da4b5a48d78634e38230e000000000c22374c61778b9fb4a68f7a644f3a250f000000000013283d52687d92a7b7a28d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020354a60758a9fb5b29c87725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3f54697e94a9c8a18c77614c37220c00000000000000000010253a4f657a8fa4baa5907b66503b2611000000000000000000000002182d42576d8297aca7927c6752493c38352b221b10010000000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c37253b50657a90ab9a85705544312e3b484c5861676c707274757473706d6761584c483b2e201000000000162b40556b8095aab59f8a75604a271502000000000000000b20364b6074879193928a79634e38230e0000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000005182b3b54697f94a9b19c86715b4935210c000000000a1f3347586f849aafab96806b563d2d1a070000000012273c51677c91a6b8a38e79634e39240e0006060606060606060606060500000000000000000000000000000000000000000000000000000001080b0b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000020354a60758a9fb5b29c87725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3e54697e93a9b7a18c77624c37220d0000000000000000000d22384d62778da2b7a8927d68533d2813000000000000000000000003182d43586d8298ada7927d69625a554d493c372e1d150900000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c3722364b61768b9f9f8975604b35202a343a464c52575b5d5460545e5b58524c473a342a1d100200000000162b40556b8095aab59f8a75604a352000000000000000000e23384e63788da5a8a8927c67523d27120000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000b2034485970859bb0aa95806a553d2c1a060000000004182a3a53687e93abb29c87725b4a36210c0000000010263b50657b90a5c6a5907b66503b26171b1b1b1b1b1b1b1b1b1b1b1b1b13110b02000000000000000000000000000000000000050b0d1519141c20201c141a150e0c0600000000000000000000000000000000000000000000000000000000000000000000000020354a60758a9fc3b29c87725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3e54697e93a9b7a18c77624c37220d0000000000000000000c21374c61768ca1b6a9937e69543e2914000000000000000000000004192e43596e8398aeb09b857e78716a625a4f4b3f31271909000000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c372233465771879ca88e79634e3924181f2933363d414648434a434946423d37332a1f180d000000000000162b40556b8095aab59f8a75604a352000000000000000000e23384e63788da3c3a7927d67523d28120000000c21364c61768ba1c7a9947e69543f2914000000000000000000000000000000000000000000000000000013283d52687d92a7b7a28c77624d37220e0a04000500040b0f21364b61768ba0b6a9937e69543e29140000000d22374c62778b9fb5a48e79634e39240f0000000000000d22374c62778b9fb4a48e79634e39230e000000000e23384e63788da8baa9947f6a544033293030303030303030303030303028261f1406000000000000000000000000000000040d1920222a2f2630353530262f2a2320190e040000000000000000000000000000000000000000000000000000000000000000000020354a60758aa5aeae9c87725d47321d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3e54697e93a9b7a18c77624c37220d0000000000000000000b21364b60768babbcaa947f6a553f2a150000000000000000000000041a2f44596f8499aeb5a39b938d867f786f655d4b44372718080000000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c37222939586d8297a8927d68533d28130b171f21282c302530353025312d28211f170c0500000000000000162b40556b8095aab59f8a75603a2a1704000000000000000e23384e63788da3b8a7927d67523d28120000000b20354b60758aa9baaa947f6a553f2a15000606060606060606060606060606060000000000000000000011263b50667b90a5c4a38e79634e392b211f171b1a1b181f222c3a4d62788da2c5a7917c67523c271200000417293a53687e93abb19c87725b4a36210c0000000000000b1f34475970859aafaa947f6a553c2b19050000000b20354b6074899fb4b09b85705e4b4639454545454545454545454545453e3a31241400000000000000000000000000000b171f2b34373f4436434b4b4348444038352c1f180c0000000000000000000000000000000000000000000000000000000000000000001d33485d728796999995846f5a452f1a00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3e54697e93a9b7a18c77624c37220d000000000000000000091e324556758a9fb4aa95806b55402b160000000000000000000000051a30455a6f859aaab0b4b0a8a49c948d847a6c6055443626140100000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c3722293e53697e93a897826c5738281603040a0c12171b131c201c131b18120c0a04000000000000000000152a3f556a7f94aab59f8a755847331f0e0a04000500040a0e23384e63788da3b8a6917c67513c2712000000081d31445574899fb4ac97826c573b2b191b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b14120c030000000000000e24394e63798ea6b7a8937d6857483c3733293030302a34373d4958677d92a7b8a78f7a654f3a251000000a1f3346586f849aafaa95806b553d2d1a0700000000000005182a3b53697e93abb09b86715a4835200b000000081c30435470859ab0b4a3917c6961575b5b5b5b5b5b5b5b5b5b5b5b5b5a534e42311a0a0000000000000000000000000c1b29333b484d54595d546060545d59554d493c342a1c0d00000000000000000000000000000000000000000000000000000000000000000e23384e63798184838077624c37220d00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3e54697e93a9b7a18c77624c37220d000000000000000000021628385f74899fb4ab96816b56412c160000000000000000000000051b30455a70848f959b9fabaeb4b1aaa29a8d8173605443301c0a00000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c3722243a4f64798fa99b86715645321e0900000000020000070b070000030000000000000000000000000013283d53687d92a8c7a18c76614c392c211f171b1a1b171f212c3a4f657a8fa4c2a48f7a644f3a250f000000011426375c72879cb1b09b85705948352b30303030303030303030303030303030292720140700000000000b20354a6074889db2b29c8776625a514c473a4645463b474c525b6376869cb2b39e8974604b36200b00000c21364c61768a9fb4a58e79644e39240f00000000000000000d22374d62778c9fb5a38d78624d38220d0000000114263653697e93a8b9b49f8b7e7672707070707070707070707070707068604e38271502000000000000000000000c1c293a464c59626a6e7274757574726f6a635a4c473a2b1d0d000000000000000000000000000000000000000000000000000000000000000c2135495b636c6e6e6b625948341f0b00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533d3754697e94a9c4a18c76614c37210c000000000000000000091d324556758a9fb4aa95806b55402b160000000000000000000000000b20364b60747a80868b92989fa9b3b3ab9f968272604b38281603000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c372220364b60758a9f9f8a76604b36210b000000000000000000000000000000000000000000000000000011263b50667b90a9baa6917c6657493c37332a3030302a33373c4958697f94a9b6a48d78624d38220d00000000192e43586e8398adb49f8c77624d493c454545454545454545454545454545453f3b3225140000000000071c3043546c8196a7b6a59b84786d6661585c5b5a5b5c5961676e79859ba4b6a897826d5544311d08000316283852677d92aab29c87725c4a36220d00000000000000000b2034485970859bb0a9937e69543a2a18040000000c21374c61768a9eb4baa99f938a8785858585858585858585858585857e685645311d090000000000000000000417293a4658616d787f8387898a8a8988847f786e6159483b2b1808000000000000000000000000000000000000000000000000000000000000061a2c3d494e565959554c483b2a180500000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000002172c41576c8196aca8927d68533845556b8096abb7a68a75604b35200b0000000000000000000b20364b60758babbcaa947f6a553f2a15000000000000000000000000091d31455660656b70767c838a949ea7b5b5a0947f695645321e09000e24394e63798ea3a6917c66513c27110012273c52677c91a7a18c77614c37221d31455671869baa8f7a644f3a250f00000000000000000000000000000000000000000000000000000c21364b61768a9fb4b19c8675625a514c473a4645463a474c515a6376879db2b19c87725a4835200b0000000014293f54697e94abbcab97826d625a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b544f43321c0c00000000001325364d6277899eb3b4a39b8b827b767371706f707174777c838c9ba3b5b49f8a78624d3727150200091e3245566e8399aeab96806b563e2d1b07000000000000000005182b3b54697e94a9af9a85705947341f0a0000000a1f334758687e939fb2b7b4aa9f9c9b9a9a9a9a9a9a9a9a9a9a9a9a9a8a75604b36200b0000000000000000000a1f3346586176828c94999d9e9fa89e9d99958c8377625948362513000000000000000000000000000000000000000000000000000000000000000f1f2c35384144444037342a1d0d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000005172c41576c8196aca8927d68534c566073869cb1b29d88735544311d080000000000000000000c21374c61768ca1b6a9937e69543e291400000000000000000000000002152738454b50555861676e767f899ba3b5b39e8975604b36210b000e24394e63798ea3a6917c66513c27131213273c52677c91a7a18c77614c3722152738576c8197a9937e69543e29140000000000000000000000000000000000000000000000000000091e3246576e8398a9b5a49b85786d6761585c5b5a5b5c5861666d78859ba5b7a795806b553c2b1905000000000d22384d62788b9fb4b1a097827872707070707070707070707070707070707069614f3a291704000000000820344859687e929fabb4a99f97918c898685858586898c91989faab5b29d937e695a4935190900000b21364b6075899fb4a58f7a644f3a2410000000000000000000000d22384d62788da3b49f8b77614c37220c0000000417293a4e606c81929da6acb1b3b1b0b0b0b0b0b0b0b0b0b0b0b0b0a88c77624d37220d0000000000000000081c2f3f4c617686979fabaeb2b3b1b1b3b2aeab9f988777625443301c07000000000000000000000000000000000000000000000000000000000000010f1a21232c2f2e2b221f180d000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000050b0d181f2c41576c8196aca8927d68586169748197a4b6ae99836e59372715010000000000000000000d22384d62778da2b7a8927d68533d2813000000000000000000000000000a1a2731363a3a474c5258616977859bb0b9a7917c66513c2711000e24394e63798ea3a6917c66513c252927282a3c52677c91a7a18c77614c372213283d52687d92a798836d583a29170400000000000000000000000000000000000000000000000000031628394e63798b9fb4b4a39b8b827c777371706f707174777c828b9ba3b5b39e8877614c37220e00000000000b2034485a6f8499a8b9b1a0988d8886858585858585858585858585858585857f695846331f0a0000000005182b3b4e60697f8d9da5b1b4ada6a79e9c9b9a9b9c9ea7a7aeb4b1a59d917f69604f3c2b1900000011273c51667c91a8b29d87725c4a36220d000000000000000000000b2035485a70859bb0ab927d68533d2813000000000c1c314252636c7e8891979c9e9faba1a1a1a1a1a1a1a1a1a1a1a19f8b76614b36210c00000000000000000e23384c5d6f8399a4b4b4b0a79e9c9c9ea6adb2b5a59b8572604a35200f0000000000000000000000000000000000000000000000000000000000000000060c0e171919160d0b0500000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000060d1920222a343741576c8196aca8927d696f777e87979fb1b5a4927c67523d2712000000000000000000000f253a4f647a8fa4b9a6907b66513b26110000000000030a0c10100d0b05000a151d20252a33373a464c5963798ea5b6ab95806b56402b16000e23384e63788da3a6917c665143363e3d3d3f4052677c91a7a88b76614b36210e23394e63788ea89c87725847331f0a00000000000000000000000000000000000000000000000000000b21364a5b6a7f949eb3b4aa9f98918c898685858586898c91989faab5ab9f917d675847331f0a000000000005192b3c4d63788a9ea9b4b2ada59d9b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a8b76614c36210c00000000000d1d31424f61697c87949ca4a9adb1b3b1b0afb0b1b3b1ada9a49c94877c69614f42321e0e000000182d43586d8298a7a796816b563e2d1b070000000000000000000005192b3c54697f94a6a799846f59442f1a040000000014243445526068747c8286898a8b8b8b8b8b8b8b8b8b8b8b8b8b8b826e5746321e090000000000000004182a3b50657b90a1b3b4a29a8f898686888d98a0b2b4a3927d67523d2c1a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000010f1a212b34373b484c52576c8196acab95807e848b939da5b1b5a69c8673604b35200b0000000000000000000012273c51677c91a6c5a38e79634e39240e000000000b171e2125262220190e0002090b10171f2129333a4a5b72879cb2ae99836e59442e19000c21374c61778ca5a9947f6a60545553525354575e6a7f95aa9e89745746331e0b20354b6074899e9f8b76614c37210c0000000000000000000000000000000000000000000000000000071a2d3d50616b80929da6b2b4ada6a79e9c9b9a9b9c9ea7a6adb4b1a59c8d7e685f4d3a2a18040000000000000d2035495a667c8a9ba2abafb3b2b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0aa8e78634e39230e000000000000132432424f5e66757f878e94989b9e9faaa1aa9f9e9b98948e877f75665e4f4332241400000000192e43596e839092918979634d3823100000000000000000000000000e22374c627788919290846f5a452f1a050000000006172734424e5660676c71737576767676767676767676767676766e645339281603000000000000000b1f3447596f8499afb5a49a847a73717173788298a1b3b09b86715b4935210c0000000000000000000000000000000000000000000000040001080b0b07000003000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000006141f2c353b484d545962676c728197acb09e95949a9faab2b5b1a39b8879635544311d080000000000000000000014293f54697e94a9b9a78b76614b36210c000004121b2933363a3b38352b1e1608000000040a0c171f2d3d5b70859ab0af9a846f5a452f1a000a1f33475872879cb29e8a7c736e6a686768696d727c899eb09b85705b392917081c30435470859aab907b65503b26100000000000000000000000000000000000000000000000000000000f1f334350626b7d88959ca5a9adb1b3b1b0afb0b1b3b0ada9a49c94877c68604e41301c0c0000000000000006192c3c4c5e667a858f959a9e9faaa1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a28c77624d37220d00000000000006142432404c56606a72797f8286898a8b8c8b8a8986827f79726a60564d4032251506000000000b20364b60747b7d7c77635b4935210c0000000000000000000000000b1f34475962767c7d7b74604b36210b0000000000000917243138454b52575c54606161616161616161616161616161575346361b0b00000000000000000c22374c61778b9fb4b19c8674645c5c5c5b636e8399aeb5a38e79634e39230e00000000000000000000000000000000000003090b1115191d141d20201c131c1814100b070000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000061424313d494e59626a71777c8286979fb1bcb0aba9afb4b0aaa49c928578635b493727150100000000000000000000132536576c8196acb39e89745746331e0a000012222f39464c50504d483c342616050000000000041b30455a70859aafb09a85705b45301b0004172a3a54697f94a2a89e9188837f7e7c7d7f8287909ea7a3937e68533e291301142636566b8096aa947f6a553f2a150000000000000000000000000000000000000000000000000000000115253344505f67757f878e94989c9e9faba1aa9f9e9b98948e867e74665e4e423123130000000000000000000e1e30404c5c64707a8085888a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b836f594834200b000000000000000614223038454b545c64696d7174757677767574716d69645c544b4538302215070000000000091d314556606568676158493c2c190600000000000000000000000005182a3b475761666866605645321e090000000000000006131a2731363c4236434a4b4c4c4c4c4c4c4c4c4c4c4c4c4b463936281800000000000000000012283d52677d92aab9a8917c67564a3e3d494e64798ea5b6a9947e69543f291400000000000000000000000000000000070a161e21262b2f32263135353025312e2a25201c1308050000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000142431424e5b636e787f868b92979ca4b1bdc2b6b1abab9f9b948e867d73635a493d2c190900000000000000000000071c30435470859ab0b09b85705b3929170300091c2f404c57616565625a514434220e0000000000051b30455a70859aafb09a85705b45301b00000c20354b607384979fada69d989493929294979da5afa1998573604b35200b0012273c51677c91a699836e593b2a180400000000000000000000000000000000000000000000000000000007162633414d57616a72797f8386898a8b8c8b8a8986827f79716960564c4031241305000000000000000000001222303e4a4f5d646b70737476767676767676767676767676767676766f65543b2b1805000000000000000004121a2832363d4a4e54585c5e57606160575e5c58544e4a3d3632281a120400000000000002152738454b5052514c473a2c1e0e00000000000000000000000000000d1d2a39464c5152504b45382816020000000000000000000a151d20272d253035363636363636363636363636363633291b180a000000000000000000132536576c8196acb49e8975604b382d2c364a5c72879cb2ae98836e59392917030000000000000000000000000004101b222832363c40444749444b4a434846433f3a35302520180d01000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000e1e31424e606979838b949b9fabacb1b4bbc8b6a49c96918b857f7971686055493c2c1f0f00000000000000000000000b20354a6074899eb3ac97816c57422c1700000f24384c5e66767a7b786b62513d29140000000000051b30455a70859aafb09a85705b45301b0000081d3144556073818f989fa9a8aaa8a7a8a9a9aa9f9a908376615544311d08000d22384d62788da69d88735947341f0b000000000000000000000000000000000000000000000000000000000816233039464b555c646a6d7174757677767574716d69635b544b45382f22130600000000000000000000000412202d363f4b4f565a5e576061616161616161616161616161616161575447371d0d00000000000000000000000a161e212d36393f434639454b4c4b453946433f39362d211e160a0000000000000000000a1a2731363b3d3c37332a1c0e000000000000000000000000000000000d1b2933363c3d3b3632281a0a000000000000000000000002090b1217131c2021212121212121212121212121211e170b00000000000000000000071c30435470869bb0af9a846f5645321a1a2d3d586d8298adb29d88725746331e0a0000000000000000000000000c181f2e3638454b5155595c5e556060545d5c58544f4a4336342b1d14090000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000006192b3c4e60697e8b989faab0b4aea7aa9faabbb19c86807b76706a635b534b44372c1e0f0100000000000000000000000e23384d63788da8b9a8937d68533e2813000011263b51667b8b8f908d806b56412c160100000000051b30455a70859aafb09a85705b45301b0000011527374455606c7a828a8f93959798989694908a847b7261584737271501000b2035485a73879da48c77614c37220c000000000000000000000000000000000000000000000000000000000005131b2932363e4a4f54585c5e57616160565e5b58544e4a3d3631271a12040000000000000000000000000002101b222e373a404539454b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c46393729190000000000000000000000000003090f1a21242a2d3128323637363228312d2a24211a0f090300000000000000000000000a151d20262827221f180c0000000000000000000000000000000000000b171e21272826211e160a000000000000000000000000000000000000070b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0a0300000000000000000000000b20354a6074899eb4ab96806b5638281614293f54697e94a9b7a58b76614c36210c00000000000000000000000e1d2a343e4a4f5660666a6e72737475757473716d696560544c483b3126190a00000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000b2035485a687e939faab4b4a89e98928d8c9fb4a8927d6b666158554e4a3d353126190e0000000000000000000000000012273d52677c92a7baa98f79644f3a240f0000182d42576d8297a9a59d88735d48331e0800000000051b30455a70859aafb09a85705b45301b00000009192737444b5c646d757a7e80828382817f7b766f666054473a2a1909000005192b3c51677d898b8675604b36210b000000000000000000000000000000000000000000000000000000000000000b161e212d36393f434739464b4c4b453846433f39362d201d150a000000000000000000000000000000000007101b22252b302832363636363636363636363636363636363633291b190b00000000000000000000000000000000070d0f14181c161e2122211e161c18140f0d0700000000000000000000000000000002090b1013120c0a040000000000000000000000000000000000000000030a0c1113110b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d23384d62788da8b9a7927d67523d281211263b50667b90a5c3a48f7a644f3a250f000000000000000000000e1e2c3b474c5c646d757c80848788898a8a898886837f7a736b62594b4437271a0a000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000d23384d62788b9fb4baa99f9489837d788196aca8927d68534c473a39362d201d14090000000000000000000000000006192c3c576d8297acb49f8a75604b36210b0000182d42586d8297adb39d88735e48331e0900000000051b30455a70859aafb09a85705b45301b00000000091927313e4a4f566064696b6c6e6d6c69666158514a43362a1c0c000000000e24394d5f67747673605745321e090000000000000000000000000000000000000000000000000000000000000000030a101b22242a2e3128323637363228312d2a23211a0f09020000000000000000000000000000000000000000080d0f161b161e21212121212121212121212121212121211e170b00000000000000000000000000000000000000000000030003090b0c0b090300030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b0b0700000000000000000000000011263b51667b90a6bcab8e79644f39240f0d22384d62778da8b9a8927d68533d28130000000000000000000c1d2c3c4959616d7a83899195999c9e9fa99f9e9d9b98948f8880776a605545382715020000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0006192c3c576c8196a9bab49f8b7f766e686c8196aca8927d68533d332924211a0f080100000000000000000000000000000c2035495a72879db2af9a85705645321e090000182d42586d8297adb39d88735e48331e0000000000051b30455a70859aafb09a85705b45301b000000000009151d2e3638454b4f53565758585754514c463a353025180c00000000000a1d30414d546061605445392816030000000000000000000000000000000000000000000000000000000000000000000000070d0f15181c161e2122211e161c18140e0c070000000000000000000000000000000000000000000000000000010003090b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b1117180f0d070000000000000000000000000000000000000000000000010b08131c20201c130809000000000000000000142a3f54697f94a9b59f8b76614b36210c0b2034485a74899eb3ab96816b56412c16000000000000000004182a3b495a6277828c989ea8aaaeb1b3b1b1b1b2b2b1ada9a69d968a7f73605645311d130000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000c2035495a73889db3b2a0907c6a6157576c8196aca8927d68533d28170e0c0700000000000000000000000000000000000d23384d62788da5b7aa957f6a55382816020000182d42576d8297acb39d88735e3b2b190902000003091527375a70859aafaf9a85705a45301b00000000000002101b222832363a3e40424343413f3b363329201c13080000000000000112233036434b4c4a4336281b0a00000000000000000000000000000000000000000000000000000000000000000000000000000000030003090c0c0b09030003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000002090b0e1011121212110d0b050000000000000000000000000000000008131c20262c2d24211a0f01000000000000000000000000000000000000000005131e25253035353025231c110400000000000000132536586d8297adb29d87725746321e0905192b3c5b70859bb0af99846f5a39291703000000000000000b1f344759627887989fabb4b2aaa4a69e9c9b9c9c9ea7a5abb3b2a89e948374604b4130180800000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000d23384d62788da6b7ae98836e5e4c46576c8196aca8927d68533d28130000000000000000000000000000000000000005192b3b53697e93a8b9a88f7a654f3a2510000000162c41566b8196abb39e8974594834211e161818161e2131445570869bb0ae99836e59442e190000000000000000070a151d2024292b2d2e2d2c2a26211f170b0700000000000000000005121826303536353025180a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000000000003090c10110f0b0801000000000000000b171e21262725201d14090000000000000000000000080a161e21232527272727262220180d00000000000000000000000000000d182530353b414339362d1f0f00000000000000000000000000000000000000011323313a36434a4a4336382f2211000000000000071c30435471869bb0ae99846f593928160300182d42576d8297acb29d88725746331e0a000000000000071b2e3e4c6177889ca5b5b4a59c948f8b8887868687898c90969ea7b0b4a199836e5f4d36261401000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0011263b51667b90a6c4a7917c67524041576c8196aca8927d68533d2813000000000000000000000000000000000000000b2034485970859ab0b49e8975604b36200b00000014293f54697e94a9b9a88c77624d423632282d2d283236424b6075899eb4ac96816c57412c170000000000000000000002090b0f14161719181714110c0a040000000000000000000000000008141c2021201c1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002060001080b080100060200000000000000000000000000000000000000000b171e21262725201d14090000000000000000000000000000000b161e21262724201c140800000000010f1b2933363b3c3a3531261909000000000000000002101b22283236393b3c3c3c3c3b37342b1d170800000000000000000000000d1d2a36434a5056584e4a3d2d1a070000000000000000000000000000000000000b1e31414e5254606054504c402f1c0900000000000b20354a6074899eb4ab96806b56412b16000014293f54697e94a9b7a58b76614b36210c0000000000000d22364a5c6e8398a6b6a99f93877f7a76737271717274767b8088969fb0b2a1927d675443301c08000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0013283e53687d93a8b8a38e78634e3941576c8196aca8927d68533d2813000000000000000000000000000000000000000d22374d62778c9fb5ad98836e5544311d080000000f253a4f647a8fa5b7ab96806b61514b4538424338454b5160697e93a8b9a8927d67523d271200000000000000000000000000000001020303020000000000000000000000000000000000000001080b0c0b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d0f14181b1e151d201d151d1b17140f0d070000000000000000000000000000010f1b2933363b3c3a3531261909000000000000000000000000000e1b2832363b3c3a35302618080000000f1f2c39464c50514f4b44372618080000000000000311202e3738454b4e5051525252504c483b3427170200000000000000000005182a3b485460666c6d645c4a36211100000000000000000000000000000000000010253a4e5f6872757571665e4c38230f00000000000d23384d62788da8b9a7927d67523d2812000011263b50667b90a5c3a48f7a644f3a240f0000000000000f243a4f647a8fa0b2b49f8b7e736a6461575c5c5c5d5861656b7581969fb1b29d8873604b35200b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0014293f54697e94a9b6a18c77614c3741576c8196aca8927d68533d2813000000000000000000000000000000000000081c2e3f54697e93abb9a8917c6751372715020000000b20354b6074879db2b49f8d7f70676056595858595660676f7e8b9fb4b49f8a76614c37210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b101b2224292d3133273135312733302d2924221b100b0500000000000000000000000f1f2c39464c50514f4b443726180800000000000000000000000e1e2c39464b50514f4b433626140100061a2c3d49576165666460554436251300000000000011212e3e4b4f566063656667676766625951453420100000000000000000000b1f34485962727b81827a644e3f2f1c08000000000000000000000000000000000013283d52687d878a8a867c66503b2611000000000011263b51667b90a6bcab8e79644f39240f00000d22374d62778ca8b9a8927d68533d2813000000000001172c41566c8196abb4a2917c6860544f4b463946473a474c5056606c8197aab7a68f7a65503a2510000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00152a3f556a7f94aab6a08b76614b3641576c8196aca8927d68533d28130000000000000000000000000000000000000e23374b5d71869cb1b49e8975604b36210b00000000081d314455697e94a2b4ab9f93847c75716e6d6d6e71757c84939fa9b6a496816c5847331f0a00000000000000000000000000000000000000000000000003060002080b080200070400000000000000000000000000000000000000000000000000000000000000000003060002080b0802000704000000000000000000000000000000000000000000000000030d1820222d363a3e42464849444b44494846423e39362d2220190e040000000000000000061a2c3d4957616566646055443625130000000000000000000006192c3c495761656664605443301c08000c2135495b63767b7c7a73605443301c07000000000a1a2e3f4b5c646f75787a7c7c7c7c7b776c63513e2d1b0700000000000000000d22374c62778590969885715d4b38230f00000000000000000000000000000000001f34495f74899c9f9f9b85715c46311c0000000000142a3f54697f94a9b59f8b76604b36210b00000b2034485974899eb3ab96816b56412c160000000000031729395c72879cb1af9a85705e4b4336363229313129333738454c61778b9fb4ab95806b56402b16000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00152a3f556a7f94aab6a08b76614b3641576c8196aca8927d68533d2813000000000000000000000000000000000005192b3b50657a8fa4b5ad98836e5645321e0900000000011426374b6073849aa3b2b4a29a918a8684828284868b919aa2b4b3a59c8675614b3a2917040000000000000000000000000000000000000001080b1014181b1e151d201d151e1c1915110c0a03000000000000000000000000000000000000000000000001080b1014181b1e151d201d151e1c1915110c0a030000000000000000000000000000000000000a161e2b34373e4a4f54575b5d5e5560555e5d5b57544f4a3e38352b1f170b000000000000000c2135495b63767b7c7a73605443301c070000000000000000000c2035495a63757b7c7a73604b35200b000e23394e63798a90918f8572604a35200b000000031628384b5d657a848a8e9091919191908b816c5c4a36220d0000000000000000152b40556a8095a3aba3907b65503d2c1a060000000000000000000000000000000020354a60758aa8b4b29c87725d47321d0000000000132536586d8297adb29d87725745321e09000005192b3b5b70859bb0af99846f5a39291703000000000a1e33465774899fb4aa95806a55403026211e161c1c171f212834475971879cb1ad98836d58432e18000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00152a3f556a7f94aab6a08b76614b3641576c8196aca8927d68533d281300000000000000000000000000000000000b203448596e8398aeb6a5907b6650382816030000000000091d31445561768598a0b0b4afaa9f9b999798999c9faaafb4b0a1998778625746321c0c0000000000000000000000000000000000000608141c20252a2d3033273136312733312e2b27211e170b08010000000000000000000000000000000000000608141c20252a2d3033273136312733312e2b27211e170b080100000000000000000000000000000e1b28323b484d565c64696d7073747575747372706c69645c564d483c33291b0f0100000000000e23394e63788a90918f8572604a35200b0000000000000000000e23384d63788890918f826e58432e190013283e53687e93a8a6a38c77624d37220d000000091e324556657b8b999faaa5a6a7a7a7ab9f8e7a644f39240f000000000000000010253a50657a8fa3b5af99846f5b4936210c0000000000000000000000000000000020354a60758a9fc6b29c87725d47321d00000000071c30435471869bb0ae99846f5939281603000000182d42576d8297acb29d88725746331e0a000000000c21364c61768ba9baa8937e69533e29140c0a030000040a0c182a3b5a70859aafaf9a856f5a45301a000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00152a3f556a7f94aab6a08b76614b3641576c8196aca8927d68533d28130000000000000000000000000000000005192b3c4d62788b9fb4b29d8773604b35200b000000000000011426374758617582909ba3a9afb3b1aeadadaeb1b3afa9a39b918376625a483928160000000000000000000000000000000000040f1a212630353a3f42464849444b4449484743403c363329201c1408000000000000000000000000000000040f1a212630353a3f42464849444b4449484743403c363329201c14080000000000000000000000000e1e2b39454b59626b72797e828688898a8a8a898885827e79726b625a4c463a2d1f0f000000000013283e53687d93a8a6a38c77624d37220d000000000000000005182b3b566b8096a6a699846f5a442f1a0013293e53687e93a8c1a28c77624d37220d0000000b21364b6075889da9b4b4b0abaab4b9bca9947e69543f291400000000000000000e23374b5d70859bb0b59f8c79634e3b2a180400000000000000000000000000000020354a60758a9fb5b29c87725d47321d000000000b20354a6074899eb4ab95806b56402b160000000014293f54697e94a9b7a58b76614b36210c000000000d22374c62778ca1c7a8937e69533e291400000000000000001b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0014293e54697e93a9b6a18c77614c3741576c8196aca8927d68533d281306060606030000000000000000000000082035485a6c8197aabaa9947f6a5443301c080000000000000009192a3a4757616e7b858e949a9ea7a3a4a4a3a79e9a948e857c6f6158483c2b1b0b000000000000000000000000000000000c171f2c3536434b4f54585b5d5e5560555f5d5c5955514c46393530261811000000000000000000000000000c171f2c3536434b4f54585b5d5e5560555f5d5c5955514c46393530261811000000000000000000000c1c2b3c4857606b7780878f93979b9d9e9faa9f9e9d9b97938e8781786b61584a3d2d1f0e0000000013293e53687e93a8c1a28c77624d37220d00000000000000000b2034485971869cb1a9947e69543f29140013293e53687e93a8b7a28c77624d37220d000004182a3a53687d92a6b7aea29a96959ea8b9ab96816b56412c160000000000000000081c2e3f52677c91a5b7ab97826d5947341f0a00000000000000000000000000000020354a60758a9fb5b29c87725d47321d000000000d23384d62788da8b9a7927d67523d28120000000011263b50667b90a5c3a48f7a644f3a240f000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0013283d53687d92a8b8a38e78634e3941576c8196aca8927d68533d281b1b1b1b1b180b09020000000000000008182d3d4d62788b9fb4b49f8a77614c3626140100000000000000000c1c2a39464b5e6670797f84898c8e8f8f8e8b88847f7970665e4c473a2b1e0e000000000000000000000000000000000e1c2a333d494e546065696d7073747475757473716e6a666157524b43362f1c1308000000000000000000000e1c2a333d494e546065696d7073747475757473716e6a666157524b43362f1c13080000000000000004182a3a485a6275808a969da5a9acb0b2b2b1b1b1b2b2b0aca9a59d968a8076635b4a3d2c190900000013293e53687e93a8b7a28c77624d37220d00000000000000000d22374c62778ca4b5a68e79634e39230e0013293e53687e93a8b7a28c77624d37220d00000a1f33475870859aafae9d948581808a9eb4ac97826c57422d170000000000000000001120354b6074879db2b49f8a77614c38281602000000000000000000000000000020354a60758aa9b9b29c87725d47321d0000000011263b51667b90a6bcab8e79644f39240f000000000d22374d62778ca7b9a7927d68523d2813000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0011263b51667b90a6c4a7917c67523e41576c8196aca8927d68533d3030303030302d211e160a0000000000001325364a5b6c8297a9baaa97826d5947341808000000000000000000000c1b2933404c505b636a6f73767879797876736f6a635b514c40332a1c0e000000000000000000000000000000000e1e2c3a474c5b636c747a7f828588898a8b8a89888683807c766f6760544c403025180800000000000000000e1e2c3a474c5b636c747a7f828588898a8b8a89888683807c766f6760544c40302518080000000000000a1f334758627886959fa9b2b3aca6a99f9d9c9b9c9d9fa9a6acb3b2a99f968779635b4937271502000013293e53687e93a8b7a28c77624d37220d000000000000000013253652687d92a7b29d88735b4a36210c0013293e53687e93a8b7a28c77624d37220d00000c22374c61778b9fb4a7947f706c73889db3ac97826d57422d18000000000000000000081d314455697e94a8b9a995806a5645321e0800000000000000000000000000001f344a5f748b9ea8a69c86715c47311c00000000142a3f54697f94a9b59f8b76604b36210b000000000b2034485974899eb3ab96816b56412c16000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000d22374d62778ca6b7ad98836e5c4b45576c8196aca8927d685345454545454545433632281a0a00000000071c30435463798c9fb4b49f8c78634d3b2a180000000000000000000000000b171e2f383d4a4e545a58616364646361585a544e4a3d38301f180c000000000000000000000000000000000c1d2c3c4958616c7982888f94979b9d9e9faa9f9e9d9c9895918a847c73665e4a43362513000000000000000c1d2c3c4958616c7982888f94979b9d9e9faa9f9e9d9c9895918a847c73665e4a433625130000000000081c2e3f4c6176879ca4b4b4a89e97918c8987878687888a8c91979ea7b4b4a59d8979635544311d08000013293e53687e93a8b7a28c77624d37220d00000000000000071c3043546d8398adad97826d583d2d1a070013293e53687e93a8b7a28c77624d37220d000012273d52677c92abb39e8975605e73889db3ac97826d57422d18000000000000000000011527374c6176899eb3b39e8875604b3625130000000000000000000000000000152a3f546a7f898c8c887c67523d271200000000132536586d8297adb29d87725745321e090000000005192b3b5b70859bb0af99846f5a392917030000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000b2034485973889db2b49f8c7a6860565b6c8196aca8927d685b5b5b5b5b5b5b5b584b45382816020000000b20354a6072859aaab9a897826c5a49351d0c0000000000000000000000000003111c232d36393f3a474c4e4f4f4e4c463a3f39362d241d12040000000000000000000000000000000004182a3b495a6276818c979ea6a9adb0b2b2b1b1b1b2b2b1aeaaa99f9992867b6c605443301c13000000000004182a3b495a6276818c979ea6a9adb0b2b2b1b1b1b2b2b1aeaaa99f9992867b6c605443301c13000000000e23374b5d6e8399a5b5aa9f9689817c7775727171717275777c8189949fa9b6a79c8674604b36200d000013293e53687e93a8b7a28c77624d37220d000000000000000b20354a6074889eb3ab917c67523c2712000013293e53687e93a8b7a28c77624d37220d0005182a3b576c8297acae98836e565e73889db3ac97826d57422d1800000000000000000000091e3346576b8096aab8a6937e685443301c070000000000000000000000000013273c4f616a75777774675f4d392510000000071c30435470869bb0ae99846f59392816030000000000182d42576d8297acb29d88725746331e0a0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0005182b3b566b8096aabbaa9e897d757170708196aca8927d7070707070707070706d605645321e0900000013283d52687d92a2b4b49e8977624d3c2c1900000000000000000000000000000000090f1a21242a293337393a3a393633292a24211a0f090000000000000000000000000000000000000b1f344759627886979faab3b3aba5a99f9d9c9b9c9c9ea7a4a9afb4afa49c908172604a41301909000000000b1f344759627886979faab3b3aba5a99f9d9c9b9c9c9ea7a4a9afb4afa49c908172604a4130190900000010253a50657b8fa1b3b49f8c80766c666260545c5c5c546062666c757f8b9fa9b5a4937e68533b2b18050013293e53687e93a8b7a28c77624d37220d000000000000000f24394f64798ea6b59f8b77614c37220c000013293e53687e93a8b7a28c77624d37220d000b1f34485972879cb1a8937d68535e73889db3ac97826d57422d1800000000000000000000031729394d62788b9fb4b19c8673604a352010000000000000000000000000000c2032434f5560626260544d41301e0a0000000b20354a6074899eb4ab95806b56402b1600000000000014293f54697e94a9b7a58b76614b36210c0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000e23384e63798b9fb4b8a79e928a878585889db3b29c878585858585858585858274604b36210b0000001d32475c72879cabb2a2947e695948341e0e000000000000000000000000000000000000070c0e15171f2123242423211f17150e0c0700000000000000000000000000000000000000071b2e3e4c6177889ca4b4b4a69d96908c898787868687898b8e939a9fabb4b19e96816c5f4d372715020000071b2e3e4c6177889ca4b4b4a69d96908c898787868687898b8e939a9fabb4b19e96816c5f4d372715020004182a3a586d8398adb3a2927d6b6157514d4a43364636434a4d5156606a7b8b9fb4b19c8671594834200b0013293e53687e93a8b7a28c77624d37220d00000000000003162939556a7f94aab09b86715847331f0a000013293e53687e93a8b7a28c77624d37220d000d22374c62778ca4b6a68d78634e5e73889db3ac97826d57422d1800000000000000000000000b2034485a6d8398adb6a4907b66513e2d1b070000000000000000000000000315253237444b4d4c4b4336302313010000000d22384d62788da8b9a7927d67523d281200000000000010263b50657b90a5c3a48f79644f3a240f0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000c2135495b6b8095a1b3b8b3a99f9c9b9a9da6b7b6a59c9a9a9a9a9a9a9a9a9a917c67523c2712000000152a3f546a7f8d989d9a8473604b3b2b180000000000000000000000000000000000000000000000040a0c0e0f0f0e0c0a0400000000000000000000000000000000000000000000000d22374b5c6e8398a6b6a99f9488807b777472717171727376797e848c9aa2b3b09f927d675544311d0800000d22374b5c6e8398a6b6a99f9488807b777472717171727376797e848c9aa2b3b09f927d675544311d08000a1f34475973889eb3af9a846f5f4b463937353025312530353738454b5d6c8196abb5a48c77624c37220d0013293e53687e93a8b7a28c77624d37220d0000000000000a1e32465770859aafab95806b563a2a1804000013293e53687e93a8b7a28c77624d37220d0012273c52677c91a7b39d88735b495e73889db3ac97826d57422d18000000000000000000000005192b3c4f647a8ea2b4af9a846f5c4a36220d0000000000000000000000000007151927313637373530261813050000000011263b51667b90a6bcab8e79644f39240f0000000000000d22374d62778ca7b9a7927d68523d28130000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8c7a28c77624d37220d0000061a2c3d4b607483949ea7adb1b3b1b0b0b3b7c4c3b6b2b0b0b0b0b0b0b0b0a9947f6a543f2a1500000013273c4f616a7a83888578625443301d0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f243a4f647a8fa0b2b49f8b7f746b6662595d5c5c5c5d576164696f798499a1b3b29d8874604b36200b00000f243a4f647a8fa0b2b49f8b7f746b6662595d5c5c5c5d576164696f798499a1b3b29d8874604b36200b000c22374c61778ca7b8a9937e695441322922201c131c131c202228323f50657a90a5c2a5907b65503b26100013293e53687e93a8b7a28c77624d37220d0000000000000c21364b61768a9fb4a88f7a65503a251000000013293e53687e93a8b7a28c77624d37220d04182a3b576c8197acad98836e583d5e73889db3ac97826d57422d180000000000000000000000000d22364a5c70859aafb4a28e79644e3b2b1805000000000000000000000000000009151d202222201c1408000000000000142a3f54697f94a9b59f8b76604b36210b0000000000000b2034485974899eb3ab96806b56412b160000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000013293e53687e93a8afa98c77624d37220d0000000f1d32455660727f8992979c9e9faba1acb1bdbaaea8a1a1a1a1a1a1a1a1a7937e68533e29130000000c2032434f5d656e7370625a48362614000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1018150c0a0400000000000001172c41566c8196abb4a2917d696055504c473b47464739464b4f545b63738399a9b7a6917c66513c27110001172c41566c8196abb4a2917d696055504c473b47464739464b4f545b63738399a9b7a6917c66513c2711000e23384e63788da3c5a7917c67523c27160d0b07000000070b0d1623384e63788da3b8a7917c67523c27120013293e53687e93a8b7a28c77624d37220d00000000000011263c51667b91aab49e8975604b36200b00000013293e53687e93a8b7a28c77624d37220d0b1f34475971879cb1a8937e6853485e73889db3ac97826d57422d18000000000000000000000000071b2d3e51667c91a4b6ad98826d594834200b00000000000000000000000000000002080b0d0d0b080100000000000000132536586d8297adb29d87725745321e0900000000000005182b3b5b70859bb0af99846f5a3929160300000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000011263c51667c91989a978b75604b36210b000000021528384554606a767d8287898a8b8b979fb1ae9c938b8b8b8b8b8b8b8b8b8978624d37220d000000031525323f4b4f585d5b4d483c2b18080000000000000000000000000000000000000000000000000000000000000000000000000000000003111c23252e2b221f180c0000000000031729395c72879cb1b09a85705f4b443737342a323131293336393d495561778a9fb4ac97816c57422c1700031729395c72879cb1b09a85705f4b443737342a323131293336393d495561778a9fb4ac97816c57422c17000e24394e63798ea3b8a7917c67523c27120000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d37220d000000000006192b3c576c8196acae99846f5645311d0900000013293e53687e93a8b7a28c77624d37220d0c22374c61778ca4b6a68d78634e485e73889db3ac97826d57422d18000000000000000000000000001020354a6073879cb1b49f8b77624d3929160300000000000000000000000000000000000000000000000000000000071c30435470869bb0ae99846e593928160300000000000000182d42576d8297acb29d88725746321e0a00000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b00000000000000000000000000000f24384c5e687e8384827b655745321e09000000000a1a2836434b5761686d72747576768197aca8937e7676767676767676767462594834200b000000000715212e373a43484638352b1e0e000000000000000000000000000000000000000000000000000000000000000000000000000000000311212e373a434037332a1c10020000000a1e33465774899fb4aa95806a55413127221f181c1c1c171e21242c37475970859ab0af9a85705a45301b000a1e33465774899fb4aa95806a55413127221f181c1c1c171e21242c37475970859ab0af9a85705a45301b000e24394e63798ea3c5a7917c67523c27120000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d37220d00000000000b2035495a72879cb2a9937e69543827150200000013293e53687e93a8b7a28c77624d37220d12273c51677c91a6b39e88735b49485e73889db3ac97826d57422d1800000000000000000000000000071c304354687e93a7b8aa96806b5746321e09000000000000000000000000000000000000000000000000000000000b20354a6074899eb4ab95806b56402b16000000000000000014293f54697e94a9b59f8b76614b36210c00000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000000000000000000000000091d30404e60686e6f6d655d4b3928160300000000000a18263039464b53585c5460616c8196aca8927d6861616161616161616055483b2b1905000000000002101b22252e33312220190e000000000000000000000000000000000000000000000000000000000000000000000000000000000011212e3f4b4f58554c473a2d20100000000c21364c61768ba8baa8937e69533e29150d0b05000700030a0c0f192a3b596e8398aeb19c86715c47311c000c21364c61768ba8baa8937e69533e29150d0b05000700030a0c0f192a3b596e8398aeb19c86715c47311c000e23394e63798ea6a9a9917c67523c27120000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d37220d00000000000d23384d62788da5b6a58d78634e38230e0000000013293e53687e93a8b7a28c77624d37220d182a3a576c8197acae98836e593d485e73889db3ac97826d57422d1800000000000000000000000000001325364b6075889eb3b39e8976614b372614010000000000000000000000000000000000000000000000000000000d22384d62788da8b9a7927d67523d2812000000000000000010263b50657b90a5bcab8f79644f3a240f00000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000000122231424e53595a584f4b3f2e1b0a0000000000000008141c2933363d4236434b576c8196aca8927d68534c4c4c4c4c4c4c4b44372b1d0d0000000000000000080e10191e1b0d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a2e3f4b5d656d6a61584a3e2d1b0b00000d22374c62778ca1c6a8937e69533e291400000000000000000000192e43596e8398aeb19c87725c47321d000d22374c62778ca1c6a8937e69533e291400000000000000000000192e43596e8398aeb19c87725c47321d000c21364b6175889294938b79634e38230e0000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d372211111111111116283853687e93a8b29d88725b4935210c0000000013293e53687e93a8b7a28c77624d37220d1f33475871869cb1a8937e68533e485e73889db3ac97826d57422d180000000000000000000000000000081e3245566a8095a9b9a7937e695544311d0800000000000000000000000000000000000000000000000000000011263b50667b90a5bcab8e79644f39240f00000000000000000d22374d62778ca7b9a7927d68523d281300000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000000000000000000000000000c1c2a3337424647453e3b312414020000000000000000010b171e21282d263041576c8196aca8927d68533d363636363636353126190d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031628384b5d657b838077645c4a39291703000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00091e32465761777d7f7d78635b4935210c0000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d3726262626262626273245566e8399aeac97826d573d2c1a060000000013293e53687e93a8b7a28c77624d37220d22374c61778b9fb5a68e79634e39485e73889db3ac97826d57422d180000000000000000000000000000031628384c61778a9fb4b29d8774604b352010000000000000000000000000000000000000000000000000000000142a3f54697f94a9b49f8a76604b36210b00000000000000000b2034485974899eb3ab96806b56412b1600000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000004172a3a474c575c5d5b534e4231201000000000000000000000030a0c1318142c41576c8196aca8927d68533d282121212121201d14090000000000000000000000000000000000000000000000060c0e1010101010100f0e0c090300000000000000000000000000000000000000000000091e324556657b8b9895877a645746331e0a000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0003162839475961686968625a493d2c1a060000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d3b3b3b3b3b3b3b3c3c3b4b6075899eb4ab917c67523c2712000000000013293e53687e93a8b7a28c77624d372212273c51677c91abb39e8874604a35485e73889db3ac97826d57422d180000000000000000000000000000000a1f3447596d8297abb6a5917c67513e2e1b080000000000000000000000000000000000000000000000000003182d42586d8297adb29d87725745321e09000000000000000005182b3b5b70859bb0ae99846f5939291603000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b00000000000000000000000000000a1f334758616c71727068604e3e2e1b070000000000000000000000000000172c41566c8196aaa8927d68523d28130c0c0c0c0b080100000000000000000000000000000000000000000000010f1a21232525252525252423211e16130b09030000000000000000000000000000000000000b21364b6075879daaa69d8976614c36210c000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000b1b2a3b474c5254534d493c2c1f0f000000000000000000000e23384e63788da3b8a7927d67523d28120013293e53687e93a8b7a28c77624d5051515151515151525359677c91a8b49f8b76614c37210c000000000013293e53687e93a8b7a28c77624d3722172a3a576c8196acae98836e544330485e73889db3ac97826d57422d1800000000000000000000000000000004182a3b4e63798c9fb5b09b85705c4b37220e00000000000000000000000000000000000000000000000000031729395b70869bb0ae99846e5939281603000000000000000000182d42576d8297acb29d87725746321e0a000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b00000000000000000000000000000c21374c6176818687857e685c4b37220d000000000000000000000000000011263b50667c8c90908a79634e38230e0000000000000000000000000000000000000000000000000000000003111f2c35393a3a3a3a3a3a3a3836322828211e160a000000000000000000000000000000000317293953687d93a5b6b49e8976614c36210c000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000c1d2a34373d3f3e38352c1e0f010a0a0a0a0a0a0a0a00020e23384e63788da3b8a7927c67523d27120013293e53687e93a8b7a28c776260656666666666666667696d77879db2b09a85705847331f0a000000000013293e53687e93a8b7a28c77624d37221f33475871869cb1a8937e69533625485e73889db3ac97826d57422d18000000000000000000000000000000000c2136495b6f8499afb4a38f7a644f3c2b19060000000000000000000001080b101313100b0700000000000a1e33465774899eafab95806b56402b160000000000000000000014293e54697e93abaf9f8b76614b36210c000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000000000000000000000002172c42576c81979b9c9a8f7a644f3a240f00000000000000000000000000000f23384c5e66777b7a76635b4935210c0000000000000000000000000000000000000000000000000000000011212e3d494e50505050504f4f4d4b46393d3632281b120400000000000000000000000000000a1e33465770859bb0b6a5937e695846331f0a000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000c181f22282a282320191a1f1f1f1f1f1f1f1f1f1f1f151d24394f64798ea4b9a6917c66513c27110013293e53687e93a8b7a28c7762737b7b7b7b7b7b7b7b7c7e82899da5b6a8937e68533a2a1704000000000013293e53687e93a8b7a28c77624d372221374c61768b9fb5a78e79634e3933485e73889db3ac97826d57422d1800000000000000000000000000000000061a2c3d50657b90a3b5ae98836e5a4935200c00000000000000000009151d2026282825201c13080000000c21364c61768b989a98907b65503b2610000000000000000000000e24394e63798d989a988d78634d38230e000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000000000000000000000004192f44596e8499aeb2a6917c66513c27110000000000000000000000000000091c2f404c596165656157493d2c1a06000000000000000000000000000000000000000000000000000000081c2e3f4b5b636565656565656463615759534b45392f221205000000000000000000000000000c21364b61768a9fb4b29d8774604b3a291704000d22374c62778ca1b7a8937e69533e2914000000050a0a0a0003091a2f44596f8499aeb19b86715c46311c000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000040b0c131413151d203034343434343434343434342832363a51667b90a6c7a5907b65503b26100013293e53687e93a8b7a28c776a8090909090909090919193979ea7b6b39e8976614b36211002000000000013293e53687e93a8b7a28c77624d3722273c51667c91abb39e8874604a3533485e73889db3ac97826d57422d1800000000000000000000000000000000000f23384b5d71869bb1b49f8b78624d3a2917040000000000000009192731353b3e3e3a353025180800000a1e334657677d8384837c665d4c38230e000000000000000000000c21364a5b657b8284837d685a4935200c000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000000000000000000000004192f44596e8499aebba6917c66513c271100000000000000000000000000000011222f3b474c50504b46392c1f0e000000000000000000000000000000000000000000000000000000000e23374b5d65797a7a7a7a7a7a797876736e6860574c403023120000000000000000000000000010253a50657a8faabbaa957f6a5544311b0b00000d22374c62778ca1b7a8937e69533e291401080b1b20202020161e212d3e5b70859ab0af9a85705a45301b000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000091927313645494949494949494949494938454b4e586a8095aabaa98d78634d38230e0013293e53687e93a8b7a28c7770859aa6a6a6a6a6a6a6a7a8acb3b8b4a2937e6957473b2e2010000000000013293e53687e93a8b7a28c77624d3722293a566c8196abae99836e54433033485e73889db3ac97826d57422d180000000000000000000000000000000000081c2f3f52677d92a6b7aa96816c5846331f0900000000000001152737444b5053534f4a433625130000031729394d5f676e6f6d665e4d3f2f1c0800000000000000000000071a2d3d4b5d656d6f6e68604e3c2c1906000c22374c61778cabbca8937e69533e291403000000000000071527375a70859aafb09b85705b46301b0000000000000000000000000004192f44596e8499aebba6917c66513c271100000000000000000000000000000004111d2a34373b3b3633291b0e000000000000000000000000000000000000000000000000000000000010253a50657b8d8f8f8f8f8f8f8f8d8b88837d75665e4d41301d0d00000000000000000000000012273c52677c91a7c8a58f7a65503727150000000d22374c62778ca1b7a8937e69533e2914141c203035353535283236384a5c73889eb3ae99836e59442e19000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000002152737444b5a5f5f5f5f5f5f5f5f5f5f5f5f5660636876889db2b49f8975604b35200b0013293e53687e93a8b7a28c7770859babababababababacafb1b5bcb09a85766c61594b3e2e1d0d0000000013293e53687e93a8b7a28c77624d372233475871869bb1a9937e6954362533485e73889db3ac97826d57422d180000000000000000000000000000000000001120364b6074889db2b49e8976614c372715020000000000081d3144556065686865605443301c0700000b1b30414d52595a58514d403021110000000000000000000000000f1f2e3f4b50585a59534e42311e0e00000b20354b60748a9fb4a9947f69543a2a1e171514131414131c2031445570869bb0ae99836e59442e190000000000000000000000000004192f44596e8499aebba6917c66513c271100000000000000000000000000000000000c181f222625211e170b000000000000000000000000000000000000000000000000000000000000162b40556b8095aba5a5a5a5a4a4a2a69d9992887c675f4d3b2b1905000000000000000000000013283e53687d93a8b8a38d78634e38230e0000000d22374c62778ca1b7a8937e69533e2918263035454a4a4a4a39464b4e56647a8fa6b8aa95806a55402b15000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000081d314455606f7474747474747474747474747575787e879da6b7ae99836e5544311d080013293e53687e93a8b7a28c776d82959595959595959697999c9fabb1a29a8b8177645c4b3c2b190500000013293e53687e93a8b7a28c77624d3722374c61768b9fb4a78e79644e392433485e73889db3ac97826d57422d18000000000000000000000000000000000000081d3144556a7f94a8b9a8947f695544311d0800000000000b20354b60757b7d7d7a72604a35200b000000132330393d4345433c39302212030000000000000000000000000111212e373b4345433d3a312313000000081d31445573889db3ac97826d58473a33292a2928292a253035404b6075899eb3ac97816c57422c170000000000000000000000000004192f44596e8499aec6a6917c66513c2711000000000000000000000000000000000000040b0c10100c0a0300000000000000000000000000000000000000000000000000000000000001162c41566b8196abacacacacacadb0b4b2aea69e8d7d67594834200b000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e292636434b5a5f5f5f5f5f5761636874849aafb8a7907b66503b2611000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000b20364b6074848989898989898989898989898a8b8d939da5b6b4a2917c6651372614010013293e53687e93a8b7a28c7762777f808080808080818284878b929ca4a99f97887a645a4834200b00000013293e53687e93a8b7a28c77624d37263c51667b91abb39e8974604b352033485e73889db3ac97826d57422d18000000000000000000000000000000000000021527374c61768a9eb4b29d8874604b36201000000000001a2f445a6f849093938f816c57412c1700000005131e25272e2f2e27241d1204000000000000000000000000000003111c23252d2f2e28251e130500000001142637596f8499aeb39e897661584c4639403f3e3e3f36434a4f5e687d92a7b8aa927d68523d28130000000000000000000000000004192e44596e8399aaaba8917b66513c261100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283d53687d92969696969697989b9fa9b3b8ab9e8a78624d392816030000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29304354607075757575757576787d869aa2b4b39e8875604b36210b000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000010253a50657a8f9e9e9e9e9e9e9e9e9e9e9e9e9faaa3a8b2b6b3a39a846f5e4c381909000013293e53687e93a8b7a28c7762616a6b6b6b6b6b6b6c6c6f72777d86969fb4a69d8978624d39291703000013293e53687e93a8b7a28c77624d37293a566b8196abae99846e5443301c33485e73889db3ac97826d57422d1800000000000000000000000000000000000000091f3346586c8196aab7a6927d67523f2e1b080000000020354a60758d9fa8a89c86725d47321d00000000010a1012191a18110f09000000000000000000000000000000000000080e10181a1913110b01000000000013283d52687d92a6b7a79a8476686157585554535354565460646d7c8a9fb4b49f8b76614c37210c0000000000000000000000000000152a3f546a7f919596948a78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000070c0e1c1c160e0c0600000000000000000000000b20364b60747f81818181818283868a929ea7b8a896816c5746321e090000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29354b6073848a8a8a8a8a8a8b8e939ca4b4b5a495806b5645321e09000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000011273c51667c91a6b2b2b2b2b2b2b2b2b2b4b4b4bbc2b5b1a69e958576614c40301d00000013293e53687e93a8b7a28c77624d5556565656565656575a596168748196a1b3a798826d5746331e0a000013293e53687e93a8b7a28c77624d3733465871869bb0a9947e695436261433485e73889db3ac97826d57422d18000000000000000000000000000000000000000417293a4d62788b9fb4b09b85715d4b37220d0000000020354a60758aabbcb29c87725d47321d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b6176889db2b4a29a877e76706d6a696869696b6e7479828d9fa8b8a697826d5847331f0a00000000000000000000000000000b20354a60727c80817f78635a4835200b0000000000000000000000000000000000000000000000000000000000000000000000010f1a212431312c2320190e00000000000000000000091d314556606a6c6c6c6c6c6d6e70767d899eaab49e8976614b36210c0000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29394f64798e9f9f9f9f9f9faba3a8b1b5b2a39b8675614b38281603000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000f253a4f647a8f9d9d9d9d9d9d9d9d9d9da6b1bdc9b5a49c90887f7461584733221200000013293e53687e93a8b7a28c77624d4040404040404041423b474c55606f8399afb49f8a76614c36210c000013293e53687e93a8b7a28c77624d37364c61768b9fb4a78e79644f39241e33485e73889db3ac97826d57422d1800000000000000000000000000000000000000000c2035495a6e8398aeb5a38f7a654f3b2a180500000020354a60758a9fb5b29c87725d47321d000000010a10121f202020202020202020202020202020202020202020202020202020202017150e050000000000000a1e334657667c919db4b4a59d938b86827f7e7d7e7f8183888e989fabb6a79d8876614c3a2917040000000000000000000000000000071c30435460666b6b69635a493c2b190600000000000000000000000000000000000000000000000000000000000000000000000f1f2d363946464138352c1e1204000000000000000002152738454b55575757575757585760687a8c9fb4a8917c67523c27120000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e293b50657b90a5b1b1b1b1b1b0afada9a59d948578625746321a0a00000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000b20354b60738287888888888888888888979fb1beb19c867b746a6056473a2a170400000013293e53687e93a8b7a28c77624d372b2b2b2b2b2b2c2d2a34374450657b90a5baa9907b65503b2510000013293e53687e93a8b7a28c77624d373b51667b90abb39e8974604b35201e33485e73889db3ac97826d57422d18000000000000000000000000000000000000000006192c3c4f647a8fa2b4ad98836e5948341f0800000020354a60758a9fb5b29c87725d47321d000005131e25283435353535353535353535353535353535353535353535353535353535352c292216080000000000031729394c5e6a7f939fa9b4b2aa9f9b97959493939496999da6adb5b3a49c897a645847331c0c00000000000000000000000000000000132536434a515556544d493c2c1e0e00000000000000000000000000000000000000000000000000000000000000000000000b1b2d3d4a4e5c5c564d493c3022120000000000000000000a1a2731363f41414141414239454b5c6d8297acad98826d583b2a180500000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29394e63798e9c9c9c9c9c9c9b9a98948f877f74625a493928160000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000081d314455606e727272727272727272738197a0b2b5a4937e695f4b45382a1c0c0000000013293e53687e93a8b7a28c77624d372216161616161717181f27374c62778ca1c7a8937d68533e2813000013293e53687e93a8b7a28c77624d3739566b8096abae99846f5443301c1e33485e73889db3ac97826d57422d180000000000000000000000000000000000000000000e22374b5c70859bb0b49f8b77624c36251300000020354a60758a9fc3b29c87725d47321d00011323313a3d4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a413e3426160000000000000b1b304050616a7e8a989fabafb3b0adaaa9a8a8a9abaeb3b2ada79e948679645c4b3a2917000000000000000000000000000000000008182530353c40413f38352c1e0e0000000000000000000000000000000000000000000000000000000000000000000000031628394a5b6371716b635a4d40301d0a0000000000000000000a151d202a2c2c2c2c2c2d28323e50657a8faab29d88725948341f0b00000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29364a5b6c818787878787878684827e7a746a6056493c2b1b0b0000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000001142637444b585d5d5d5d5d5d5d5d5460728298a0b2ae9d927d675c4b382816030000000013293e53687e93a8b7a28c77624d37220d010101010100040c21364b61768ba0b6a9947f69543f2a14000013293e53687e93a8b7a28c77624d37465770869bb0a9947f69543626141e33485e73889db3ac97826d57422d18000000000000000000000000000000000000000000081b2e3e51677c91a5b7aa947f6a5443301c07000020354a60758aa5aeae9c87725d47321d000a1e31414d525f606060606060606060606060606060606060606060606060606060605f5751453419090000000000001222334350606878838b939a9ea7a5a6a7a8a8a7a6ab9f9c9890887e74635b4b3e2e1c0c00000000000000000000000000000000000008131c20262b2c2a2320190e000000000000000000000000000000000000000000000000000000000000000000000000091e324657637986868178675f4d3924100000000000000000000002090b151717171717181621364b60768a9fb4a58c77624c37220d00000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e292d3d52636c727272727271706f6d696560544b45382b1e0e000000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000000919263135434848484848484848435460728298a1b3b49f8b7a645645321e0d0000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d374b61768b9fb4a88f79644f3a240f1e33485e73889db3ac97826d57422d18000000000000000000000000000000000000000000001020354b6074879db2b29d8773604a35200b00001d33485d728796999995846f5a452f1a0010253a4d5f677475757575757575757575757575757575757575757575757575757575756c635137271501000000000004152533424e5a626e777e84898c909192939392908e8a87827b74696055493d2e2010000000000000000000000000000000000000000000070b111616140e0c06000000000000000000000000000000000000000000000000000000000000000000000000071a2d3e4b6175869b9b968b7c67513c27120000000000000000000000000000020202020200091e32455671879cb1a6907b66513b261100000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e291f354552575c5c5c5c5c5c5b5a58544f4b433631271a0e00000000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000000009141d202e323333333333332636435460738399a3b5a99d8775604b3b2a180500000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d3b50667b90aab49e8974604b35200b1e33485e73889db3ac97826d57422d1800000000000000000000000000000000000000000000081d3144556a7f94abb6a58f7a655036261401000e23384e63798184838077624c37220d0012283d52677d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b816c5544311d08000000000000071524313c484d5962696f73777a7c7d7e7d7c7b7976726d6660554b44372c1f10020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d21364a5c6c8196a4b1a999846e59442f19000000000000000000000000000000050b0d1519141c2838596e8399aea9947f6a543f2a1500000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e291727353e424747474747474645433f3a3530261d150a0000000000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000001080b191d1d1d1d1d1d1d18263644556075859ba8b7a5957f6a5948341f0b00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d39566b8095abaf99846f5544311d081e33485e73889db3ac97826d57422d1800000000000000000000000000000000000000000000011426374d62778b9fb4ac97816c5443301c08000c2135495b636c6e6e6b625948341f0b001b30455b70859aa99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fab9f8a73604b35200b0000000000000006141e2b353b484c535a59626566676968676664605758514b44373127190f010000000000000000000000000000000000000000000000000000000000000000000000000001080b12130c0a04000000000000000000000000000000000000000000081c2f3f4e64798c9fb4b2a08f7a654f3a251000000000000000000000000000040d1920222a2f26303540556b8095aaad98826d5836261401000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e291417222a2d323232323232312f2d2925201c140b09030000000000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000003080808080808000818263745576277899eb3b49e8a77624c37220e00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d465770859bb0a9947f6954372614011e33485e73889db3ac97826d57422d18000000000000000000000000000000000000000000000009203448596f849aafb39d8874604b35200b00061a2c3d494e565959554c483b2a1805001c32475c71879cb1b5b5c6b9b4b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1a88c76614c37210c0000000000000000000e19202a34373e3b484d505152535352514f4b45393b3631271d1509000000000000000000000000000000000000000000000000000000000000000000000000000009141d202828211f170c00000000000000000000000000000000000000000e23384b5d6f849aaab9a798826d5d4b37230e0000000000000000000000000b171f2b34373f4436434b4b52677c92a7b19b86715443301c08000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e2914050f15171d1d1d1d1d1c1b1a18151d202323211e160a00000000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000000000000000000000000000000000091928394859697e93a6b7a895806a553c2c1906000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d4b61768a9fb4a88f7a644f3a240f001e33485e73889db3ac97826d57422d18000000000000000000000000000000000000000000000005182b3b53687e93a8b8a68e79644f39240f00000f1f2c35384144444037342a1d0d00001a2f445a6f8499afbccdb9a89e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c8a74604b35200b00000000000000000000050d181f22292b34373b3c3d3e3e3d3b3936322826201d150902000000000000000000000000000000000000000000000000000000000000000000000000000009192631353d3d3733291c11040000000000000000000000000000000000071b2d3e50657b90a2b3b39e8977624c3f2e1c0800000000000000000000000c1b29333b484d54595d5460606064798eabb49f8975604b35200b000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29140000000207070707070704121a27313638383632281a13060000000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000000000000000000000000000000000000a1b2b3b4b6074889db2b29d87725a4935200c000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d50667b90aab49e8975604b35200b091e33485e73889db3ac97826d57422d180000000000000000000000000000000000000000000000000d23384d62788da7b9a9947e69543f29140000010f1a21232c2f2e2b221f180d00000011263b50667b909eafbfb49e8a86878787878787878787878787878787878787878787867e695443301c08000000000000000000000000050b0d141820222527282928272624211e16110b080200000000000000000000000000000000000000000000000000000000000000000000000000000008182637444b52534c473a2f221103000000000000000000000000000000000d22364a5c70849aafb8a6947f6a594834211100000000000000000000000c1c293a464c59626a6e727475767676768c9fb5a98d78634d38230e000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29140000000000000000000012222f38454b4d4e4b45383124130200000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000000000000000000000000000d1d3144556b8095abb6a58d78634d38230e000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d566b8095abaf99846f5544311d08091e33485e73889db3ac97826d57422d180000000000000003060606060606060606060606060606060b2035495a74899eb3ac97826d57422d1800000000060c0e171919160d0b05000000000f23384c5e6b8095a1b2b49f8a7a7171717171717171717171717171717171717171717169604f3626140100000000000000000000000000000000050b0d101112141312110f0b090300000000000000000000000000000000000000000000000000000000000000000000000000000000000000132536445560676861584c402f21110000000000000000000000000000000417293a4f64798ea2b4b39e8875614b3b2a1803000000000000000000000417293a4658616d787f8387898a8b8b8b8c9fabbca6917b66513c2611000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e2914000000000000000000091d2f404c5660636360564e42311e0b00000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000000000000000000000000000114263751667b90a6c3a6917c66513c2711000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d5770859bb0a9947f6a5437271501091e33485e73889db3ac97826d57422d180000000003090b181b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b192b3c5c72879cb1ae99846e59442f19000000000000000000000000000000000000091c2f404a60728399a3b5a99e887862575c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c534f4232180800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c30435460737d7d76665e4c3f2e1c0800000000000000000000000000000a1f3346586d8297acb8a7947f695746321d0d00000000000000000000000a1f3346586176828c94999d9e9faba0a0a1b5bcc9aa947f6a553f2a15000000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29140000000000000000000f24384c5e667578787568604e3a261100000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000e23394e63788ea3b8a8927d68533d2813000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000013293e53687e93a8b7a28c77624d60768a9fb4a88f7a644f3a250f00091e33485e73889db3ac97826d57422d180000000a161e212d30303030303030303030303030303030302a33435471879cb1ae99836e59442e1900000000000000000000000000000000000000111c3043546175859ba6b8a69c867561544347474747474747474747474747474747473e3b32241400000000000000000000000000000000000000040001080b0b080100050100000000000000000000000000000000000000000000000000000000000000000000000000000000000000021527384a6072839292887c665d4b37230e00000000000000000000000000000c21364c61768a9eb4b39e8875604b3928160000000000000000000000081c2f3f4c617686979fabaeb2b3b1b0b0b0b0b1b5c2ad98836d58372614010000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e291400000000000000000011263c51667c898d8d8a7e68533d281300000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000d23384d62788da2b7a8927d68533d2813000013283d52687d92a7b7a28c77624d37220e0a04000500040b0f21364b61768ba0b6a9937e69543e2914000013293e53687e93a8b7a28c776250657b90aab49f8975604b36200b00091e33485e73889db3ac97826d57422d1800000a1a2832364345454545454545454545454545454545463a474c6074899eb3ac97826d57422d18000000000000000000000000000000000000000013253646576278889ea9b5a4998372604a413032323232323232323232323232323129261f1406000000000000000000000000000002090b1115191c141c20201c141d1a17130d0b05000000000000000000000000000000000000000000000000000000000000000000000000000000091d314556687e93a1a69e8c7b65503a25100000000000000000000000000006192c3c53697e93a8b9ab95806b5745321b0b00000000000000000000000e23384c5d6f8399a4b4b4b0a79e9c9b9b9b9b9ca4b5b19b86715544311d080000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e2914000000000000000004192e44596e8399a8a89b86705b46311b06000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000050606060606060606060606060606000e23394e63788ea3b8a7917c67523c2712000011263b50667b90a5c4a38e79634e392b211f171b1a1b181f222c3a4d62788da2c5a7917c67523c2712000013293e53687e93a8b7a28c7762546b8096abaf9a846f5544311d0800091e33485e73889db3ac97826d57422d180003162838454b585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5c5861687c91a7b9aa95806a55402b15000000000000000000000000000000000000000008182839485a657b8b9fb4b3a195806b5f4d3e2d1d1c1c1c1c1c1c1c1c1c1c1c1c1c14120c0200000000000000000000000000070a151d20262a2e32263035353026322f2c282220190e09020000000000000000000000000000000000000000000000000000000000000000000000000b20364b6074889db3b6a5937e69533e2914000000000000000000000000000c2035495a71869bb0b49f8c78624d392816000000000000000000000004182a3b50657b90a1b3b4a29a8f898686868686869caab49f8a75604b35200b0000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c07000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000080e101a1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b16253a50657a8fa5c8a5907b66503b261100000e24394e63798ea6b7a8937d6857483c3733293030302a34373d4958677d92a7b8a78f7a654f3a2510000013293e53687e93a8b7a28c77626073879db2aa947f6a553727150200091e33485e73889db3ac97826d57422d1800091e324556606d70707070707070707070707070707070707173767d899eb3b7a6907b65503b25100000000000000000000000000000000000000000000b1b2b3c4b5d687e929eb0af9e917d675c4a3b2b1a0a0007070707070707070707000000000000000000000000000000040f1a212832363b40444748434b4b43494744413e38352b201d150a000000000000000000000000000000000000000000000000000000000000000000000012273c52677c91a6b8b29d8775604b36210b000000000000000000000000000d23384d62788da3b5ae99846f5a48351b0a00000000000000000000000b1f3447596f8499afb5a49a847a737171717171748b9fb4a98d78634e38230e0000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c07000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000003111c23253030303030303030303030303030303029324053697e93a8bbaa8e79644f39240f00000b20354a6074889db2b29c8776625a514c473a4645463b474c525b6376869cb2b39e8975604b36200b000013293e53687e93a8b7a28c7871747f94a5b6a68f7a644f3a240f0000091e33485e73889db3ac97826d57422d18000b21364b607582858585858585858585858585858585858586888b929ea7b9b29d8874604b36200b000000000000000000000000000000000000000000000e1e2e3f4e606c8196a1b3b49f8a7a645948382816020000000000000000000000000000000000000000000000000c171f2d3638454b5155595c5e546060545e5d5a56534d483c3632281a1204000000000000000000000000000000000000000000000000000000000000000003182d43586d8298adb7a6917c675645321e0900000000000000000000000005192b3b54697f94a9b9a7917c66513c2b190000000000000000000000000c22374c61778b9fb4b19c8674645c5c5b5b5b5672879cb1a6917c66513c27110000000000000013293e53687e93a8b7a28c77624d37220d0000000d22374c62778ca1c7a8937e69533e29140000000000000000001a2f44596f8499aeb19b86715c46311c07000d22374c62778ca1b7a8937e69533e291400000000000000000000192e43596e8398aeb19c87725c47321d000000000011212e373a4545454545454545454545454545454539464b5e6f849aafb49f8a75604b36200b0000071c3043546c8196a7b6a59b84786d6661585c5b5a5b5c5961676e79859ba4b6a897826d5544311d08000013283d53687d92a8bdb19b858689949dafb29d8873604a35200b0000091e33485e73889db3ac97826d57422d180012273c52677c919a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9b9d9fabb3b6b29e927d685645311d090000000000000000000000000000000000000000000000102131424b60738399a4b6a99d8877625645321e1504000000000000000000000000000000000000000000000e1c2a333e4a4e5660666a6e71737475757473726f6c68625a544b45383022150700000000000000000000000000000000000000000000000000000000000000021628385d72879cb2b39d8874604b382816030000000000000000000000000b2034485971869bb0b39e8975604b36200e00000000000000000000000012283d52677d92aab9a8917c67564a3e464638596e8398aeaa947f6a553f2a150000000000000013293e53687e93a8b7a28c77624d37220d0000000c21364c61768ba9baa8937e69533e29150c0a0300050003090b172939596f8499aeb09b85705b46301b06000c21374c61778cabbca8937e69533e29160d0b0500060500040a0c162939596e8398aeb19b86715c46311c00000000081c2e3f4b505a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5761697c90a1b3b09b86715645321d090000001325364d6277899eb3b4a39b8b827b767371706f707174777c838c9ba3b5b49f8a78624d37271502000012273c52677c91a7c3b5a39b9c9ea8afb9a795806b5443301c070000091e33485e73889db3ac97826d57422d1800142a3f54697f94a9b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1b3b2aeaba49c91806b5f4e38271502000000000000000000000000000000000000000000000003131d3144556176869ca7b7a69b8574604b433222120100000000000000000000000000000000000000000e1e2b3a474c5c646d757b7f838788898a8a89888784817d78716960564d4032251505000000000000000000000000000000000000000000000000000000000000091e32455674899fb4ad98826d5443301a0a000000000000000000000000000d22374d62778ca3b5ad98826d5645321d09000000000000000000000000132536576c8196acb49e8975604b382d313140556a8095aaad98836e583727150100000000000013293e53687e93a8b7a28c77624d37220d0000000a1f33465874899fb4aa95806a55413127211e171b1a1b161e212733465770859bb0ae99836e59442e1904000b20364b60748a9fb4aa95806a554232282220181c1b1b1b171f212832465770859aafaf99846f5a442f1a000000000e23374b5d656f7070707070707070707070707070707072767e8a9fb4baa9947f6954382815020000000820344859687e929fabb4a99f97918c898685858586898c91989faab5b29d937e695a493519090000000f24394f647a8ea5b4bab5b1b1b4b3b0a89e8977614c362513000000091e33485e73889db3ac97826d57422d180013283e53687d93a6a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a0a89f9d99958f877c6b625041311a0a000000000000000000000000000000000000000000000000000114263746586379899eaab5a398826d614f40301f0f000000000000000000000000000000000000000c1c2b3c4858616d7982899095999c9d9fa8a99f9e9c9996938d867e74665e4f43322313000000000000000000000000000000000000000000030001080b0b0801000b21364b60768ba9baab95806b56362614000000000000000000000000000013283d52687d92a7baa9917b6651382815020000000000000000000000071c30435470869bb0af9a846f5645321a1c273c52677c91a7b19c86715544311d0800000000000013293e53687e93a8b7a28c77624d37220d0000000417293a5c72879cb1b09a85705f4b443736332930303028323638454b6176899eb4ac96816c57412c170200081d31445572879cb2b09b8570604b463937342b313030312a333739464b6176899eb3ac97826c57422d170000000010253a50657b8485858585858585858585858585858585878a939fa8bab49f8a77614c37220c0000000005182b3b4e60697f8d9da5b1b4ada6a79e9c9b9a9b9c9ea7a7aeb4b1a59d917f69604f3c2b19000000000b20354b6073879a9fa9a1a1aa9f9d9a958a7b655947341808000000081d32485d72879da69f96816c57412c17000d22374d6277888b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a898784807a73665e50443323130000000000000000000000000000000000000000000000000000000919293a495b657b8c9fb4b2a0947f6a5e4c3d2d1c0c000000000000000000000000000000000004182a3a485a6276828c989ea8aaaeb1b2b1b0b1b2b3b2afaba8a39b93877c6a614f41301d0c00000000000000000000000000000002090b1015181c141c20201d151d1921364b61768ba0c7a9947f6a543f2a1500000000000000000000000000061a2c3d586d8298adb49f8a75604b36210b0000000000000000000000000b20354a6074899eb4ab96806b563828160e24394e63798eaab49f8a75604b35200b00000000000013293e53687e93a8b7a28c77624d37220d00000000172c41566c8196abb4a2927d6a6055504b463946454638454b5056606b8096a8b9a8917c66513c2611000002152737576c8297acb4a3927e6b6157514c483b464545463a474c5157616c8096a8b9a8917c67513c2712000000051b30455a70859a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9c9faab4b7b29f937e695847331f0a00000000000d1d31424f61697c87949ca4a9adb1b3b1b0afb0b1b3b1ada9a49c94877c69614f42321e0e00000000081d314455647a84898b8b8b8b8a88857f77655d4b3a2a18000000000012283d52677d888b8a8579634e39230e000b20344859627476767676767676767676767676767676767574726f6b6460544c4033261605000000000000000000000000000000000000000000000000000000000b1b2c3c4c5d697e939fb1b59f8d7c665b4a3a2a1909000000000000000000000000000000000a1f334758627886979fabb3afa8a99f9d9c9b9c9c9ea7a4a8afb5b1a59d8d7f6a5f4d3b2a1804000000000000000000000000070a151d20252a2e31263035353127322e2b364b61768ba0b6a9947f6a543f2a15000000000000000000000000000c2135495b73889db2af9a846f5645321e090000000000000000000000000d23384d62788da8b9a7927d67523d28120b20364b60758a9fb4a98e78634e39230e00000000000013293e53687e93a8b7a28c77624d37220d000000000f243a4f647a8fa0b2b49f8c7f746b6561575c5b5a5b5c5660656b7480959eb0b49e8975604b36210b0000000f243a4f647a8fa0b2b49f8c80756c6662595c5b5b5a5b5c5861666c7581969eb0b49e8975604b36210b000000081d32485d72879db0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1b3b1aca59d92816c604f3a2a1804000000000000132432424f5e66757f878e94989b9e9faaa1aa9f9e9b98948e877f75665e4f433224140000000000011426374a5c646f74767676767573706a61594b3f2e1c0c000000000010253a4d5f6773767571635b4936210c0005182b3b485560616161616161616161616161616161616160545d59564f4a4336302216080000000000000000000000000000000000000000000000000000000000000e1e2f3f4f606c8197a2b4ab9e8a79635947372715020000000000000000000000000000071b2d3e4c6176879ca4b4b3a29a928d8a8787868687898b8e939a9fabb6ab9f927d675947341f0b0000000000000000000004101b222731363a3f434648434b4b44494744403a4b61768ba0b6a9947f6a543f2a15000000000000000000000000000e23384e63788da6b7aa947f6a553828160200000000000000000000000011263b51667b90a6bcab8e79644f39240f091d31455671879cb1a6917c67513c271200000000000013293e53687e93a8b7a28c77624d37220d000000000d22364a5c6e8398a6b6aa9f9488807b767371706f707173767a8088959eb0b4a3947f6a5645321e090000000d22364a5c6e8398a5b5aa9f9689817c777472717070707174767b8189969fb0b3a2947f695645321e09000000071c31465c71869baba1a1a1a1a1a1a1a1a1a1a1a1a1a1ab9f9e9b9791877d6c635242321c0c0000000000000006142432404c56606a72797f8286898a8b8c8b8a8986827f79726a60564d403225150600000000000009192d3e4a4e546061616160565e5b554c473b2e21100000000000000a1e31414d52566060554e493d2c1a0600000d1d2b37444b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4b433644403a3530251812040000000000000000000000000000000000000000000000000000000000000000112132424b6073849aa5b6a89d8777615544311d1403000000000000000000000000000d22364a5c6d8298a6b6a79e90847d787572717171727476797e848d9ca4b6b39e8977614c37220c0000000000000000000c171f2d3638454b4f54585b5e546060555e5c59554f4b61768ba0b6a9947f6a543f2a150000000000000000000000000012283d52677d92a7baa98f7a644f3a240f00000000000000000000000000142a3f54697f94a9b59f8b76614b36210c02152738596e8398aeaa957f6a55402a1500000000000013293e53687e93a8b7a28c77624d37220d00000000071b2e3e4c6176889ca4b4b4a69d96908b898685858586888b8f959da6b0b4a39b8573604b38281602000000071b2e3e4c6176879ca4b4b4a79e97918c89878685858687898c90969ea7b0b4a29a8472604b382816020000000014293e54697f8c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a8986817c74675f52453424140000000000000000000614223038454b545c64696d7174757677767574716d69645c544b453830221507000000000000000010202d3636434a4b4c4c4b4538454037342a1d1002000000000000011323313a38454b4b4437362c1f0f000000000d1926313536363636363636363636363636363636363530262f2b24201c13080000000000000000000000000000000000000000000000000000000000000000000003141d3144556176879da8b7a59a8473604b42322111010000000000000000000000000f24394f647a8ea0b2ab9e897c70686360545c5b5c5d576164686f7a869ca7b8a7947e69543f291400000000000000010f1c2a333e4a4f5660656a6d71737475757473726e6b655d61768ba0b6a9947f6a543f2a1500000000000000000000000001162c41566b8196abb49f8a75604b36200b00000000000000000000000000132536586d8297adb29d87725746321e0900152b40556a8095aaae98836e5937271502000000000013293e53687e93a8b7a28c77624d37220d0000000000101f334758627886979faab3b3aba5a79e9c9b9a9b9b9d9fabaab3b3aa9f968576615544311a0a0000000000101f334758627886959ea8b2b3aca6a89f9c9b9a9a9b9c9ea8a6abb3b2a89e958475615443301a0a000000000012273b4f616976767676767676767676767676767676767573716c6760554d41342717060000000000000000000004121a2832363d4a4e54585c5e57606160575e5c58544e4a3d3632281a120400000000000000000002101b22253035363636363228302a221f180c00000000000000000005131e25283236353126211a0f01000000000009141d202121212121212121212121212121212121201c141a160f0b070000000000000000000000000000000000000000000000000000000000000000000000000002152737475863798a9eabb4a297816d604f402f1f0f000000000000000000000001162c41566b8196abb49f8c7b665e534d4b4336464739464b4f535c6477899eb3b09b85705b392917030000000000000f1f2d3a474c5c646d757a7f8386888a8a8a8a898783807a7268768ba0b6a9947f6a543f2a1500000000000000000000000004182a3b5a6f859aafb19b86715544311d08000000000000000000000000071c30435471869bb0ae99846f59392816030012273c52677c91a7b19c87715544311d08000000000013293e53687e93a8b7a28c77624d37220d000000000004182a3a485a6276818c979ea7aaaeb1b3b1b0afb0b1b3b1aeaaa79e978b817561584737261400000000000004172a3a48596275808a959da5a9acb0b3b1b0b0afb0b1b3b0ada9a69d968a80746157463626140000000000000c1f32424f57606161616161616161616161616161616160545c57514b443731231709000000000000000000000000000a161e212d36393f434639454b4c4b453946433f39362d211e160a000000000000000000000000000708131c20212121211e161b150c0b040000000000000000000000010a0a161e21201d140906000000000000000001080b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b08010001000000000000000000000000000000000000000000000000000000000000000000000000000000000009192a3a4a5b667c8d9fb4b19f937e695e4c3d2c1c0c00000000000000000000031729395c72879cb1af99846f5d4c40383530263131283236393e4a596b8196abb49f89745746331e0a00000000000e1e2d3d4a58616e7982898f94989b9d9faaa99f9e9c99958f877d758ba0b6a9947f6a543f2a150000000000000000000000000b1f34475973899eb3ad97826d58372715020000000000000000000000000b20354a6074899eb4ab96806b56412b1600000e23394e63798eaab49f8a75604b36200b000000000013293e53687e93a8b7a28c77624d37220d0000000000000c1c2b3c4858616c7982899095989c9e9faba1ab9f9e9c9995908982796c6057473a2a1909000000000000000c1c2b3b4856606b7780878e94979b9e9fa9a1a1aa9f9e9b98948f8881776a605546392918080000000000000214243239454b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b4a4336423c35312719130500000000000000000000000000000003090f1a21242a2d3128323637363228312d2a24211a0f09030000000000000000000000000000000000070b0c0c0c0b09030000000000000000000000000000000000000002090b0b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c2d3d4c5e6a7f94a0b2b49f8c7c655b493a2919090000000000000000000a1e33465774899fb4aa957f6a553f2f23201c141c1c161e21242d3b53687e93a8baa88b76614c36210c0000000006192b3c4a5b6376828c979ea8a9adb0b3b2b1b1b1b2b1aeaaa59c92849aafbfa9947f6a543f2a150000000000000000000000000c22374c61778ca7b8a9937e69543e2914000000000000000000000000000d23384d62788da8b9a7927d67523d281200000b20364b60758a9fb4aa8e79634e39230e000000000013293e53687e93a8b7a28c77624d37220d000000000000000e1e2b3a474c5b636d757b808387898a8b8c8b8a898783807b756d635b4b45392a1c0c0000000000000000000d1d2b38454b59626b72797e8285888a8a8b8c8b8a8986827f7a736b62594b4437291b0b000000000000000006141b283236363636363636363636363636363636363530252c27201d15090000000000000000000000000000000000000000070d0f14181c161e2122211e161c18140f0d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b10161b1d1f20202020202020202020202016140e04000000000000000000000000000000000000000f1f2f404f616d8298a3b5aa9e89796358463726140100000000000000000c21364c61768ba9baa8937e69533e29140b0801000003090c13283d53687d92a8c6a28d77624d38220d000000000b2035485a637988989fabb3b3aca6a99f9d9c9b9c9d9faba8afb2a29aa2b4bfa9947f6a543f2a150000000000000000000000000f243a4f64798fa4c5a6907b66513b26110000000000000000000000000011263b51667b90a6bcab8e79644f39240f0000081d31445571879cb1a7917c67523c2712000000000013293e53687e93a8b7a28c77624d37220d00000000000000000e1c29333d494e5560656a6e7174757677767574726e6b6660554e493d32281b0c00000000000000000000000d1a28323b474c565b63696d707374757676757473716d6a6460544c483b3127190b00000000000000000000000a161e2121212121212121212121212121212121201c1317120b080100000000000000000000000000000000000000000000000000030003090b0c0b09030003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b08010000000000000000000000000000000001080b1012100c0a0400000000000000000000000008131c20262b3032343535353535353535353535352b2921160800000000000000000000000000000000000001122232434b6074859ba6b7a79c8676615544311d1303000000000000000d22374c62778ca1c7a8937e69533e2914000000000000000013283d53687d92a8aea98d78624d38230d000000081c2f3f4d6278889da6b5b4a69e97918d8a87878687888a8e939a9fabafb4c0bfa9947f6a543f2a1500000000000000000000000012273c51677c91a6c7a38e79644e39240f00000000000000000000000000142a3f54697f94a9b59f8b76604b36210b000002152737596e8398aeaa95806a55402b15000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000c171f2c3537444b5055595c5e5760616160545c5955504b4437352c1e160a000000000000000000000000000a161e2a34373d4a4e54575b5e5560616160565e5b58544f4a4336342a1d15090000000000000000000000000003090b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b171e21262725201d1409000000000000000000000000000009141d20252726211f170b0000000000000000000412182530353b404548494a4a4a4a4a4a4a4a4a4a4a4a413d3426160400000000000000000000000000000000000004151e3245566277889da9b6a49a8373604b42312111000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000011263b50667b909799968b75614b36210c0000000e23374b5d70849aa6b7a99f9488817c7775727171717375797d848c9ba3b4c2bfa9947f6a543f2a1500000000000000000000000014293f54697e94a9baa98c76614c37210c00000000000000000000000000132536586d8297adb29d87725745321e09000000152b40556a8095aaae98836e59382815020000000013293e53687e93a8b7a28c77624d37220d00000000000000000000040f1a212731363b40434739454b4c4b4a433644403b363127211a0e03000000000000000000000000000000030d181f222d36393f424637444b4c4c4b453846433f3a3530251f180d0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0f11100c0a040000000000000000000000010f1b2933363b3c3a353126190900000000000000000000000009192631353a3c3b3633291b0c000000000000000715223036434a50565b5d5e60606060606060606060605f56514434210e00000000000000000000000000000000000000021628384859647a8a9fb4b3a196816c604e3f2e1d0d0000000000000d22374c62778ca1b7a8937e69533e29140b080200030100000f23384c5e677d8283817a645746321e0900000010253b50657b90a2b4b49f8b7f746c676260545c5c5c556063686f79859ba4b5bfa9947f6a543f2a15000000000000000000000000162c41566b8196abb49f89745847331f0a000000000000000000000000071c30435471869bb0ae99846f593928160300000012273c51677c91a6b19c87725645321d090000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000609151d20262b2e3228323637363530252e2b26201d15090600000000000000000000000000000000000000050b0f1a2124292d302731353637363127312d2a24201c130805000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c0f1011121212121211100f0c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000008141c20252726211f170b000000000000000000000f1f2c39464c50514f4b44372618080000000000000000000001142637444b4f51504c463a291c0c000000000005152533404d5460656b7072747575757575757575757575756b62513d290a00000000000000000000000000000000000000000a1a2b3b4a5c677d919eafb09f927e685d4b3b2a180800000000000d22374c62778ca1b7a8937e69533e2922201d151a181614120f1c2f404d5f676d6e6c645c4a39281603000001142636586d8297adb4a2917c696056514d4a43364637444b4e535b6375869cb1bfa9947f6a543f2a15000000000000000000000000172d42576c8297acb39e88735e3a2a17040000000000000000000000000b20354a6074899eb4ab95806b56402b16000000000e23394e63788eaab49f8a75604b36200b0000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000002080b1015191c161e212221201c131916110b0802000000000000000000000000000000000000000000000000070c0e14181b151d202121201d151c18150f0b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c161e212425272727272727262524211f17150e0c0600000000000000000000000000000000000000000000000000000000000000000000000008182630353a3c3b3633291b0f0100000000000000061a2c3d49576165666460554436251300000000000000000000081d314455606567656158463a2917040000000013233343505e66737b808587898a8a8a8a8a8a8a8a8a8a8a8b806b563827150200000000000000000000000000000000000000000d1d2d3e4d5f6b8095a1b3b49f8c7b65594736251300000000000d22374c62778ca1b7a8937e69533e3a383631272f2d2b292725222030414d525859574f4a3e2e1b0b000000081c30435472879cb2af9a85705e4b45383835302531273136393d4a57677d92a7bca9947f6a543f2a15000000000000000000000000182d43586d8298adb29d87725d48321d000000000000000000000000000d23384d62788da8b9a7927d67523d2812000000000b20364b60758a9fb4aa8e79634e39240e0000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000040003090b0c0c0b070000000000000000000000000000000000000000000000000000000000000000000000020001080b0c0c0b090200030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f22293236393b3c3c3c3c3c3c3b3a393733292a2320190e0900000000000000000000000000000000000000000000000000000000000000000001142636434b4f51504c463a2d1f0f000000000000000c2135495b63767b7c7a73605443301c070000000000000000081b2e3e4b60737a7c7b76615846331f0a0000000b1b304150616a7c8690959a9d9e9fab9f9f9f9f9f9f9f9faa9e89745645311d09000000000000000000000000000000000000000000102030414a60728399a4b5aa9e8877625443301c0c000000000d22374c62778ca1b7a8937e6953514f4d4b44374542403e3c3a37353030393c4244413a362e2010000000000b20354b60758a9fb5aa95806a5540312722201c131c151d20232d394d62788da2b7a9947f6a543f2a15000000000000000000000000192e44596e8399aeb19c87715c47321c0700000000000000000000000011263b51667b90a6bcab8e79644f39240f00000000081d31445571879cb1a7927c67523d27120000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006141c2a333739464b4f50515252525251514f4e4c473a3f38352c231c110400000000000000000000000000000000000000000000000000000000000000081c3043546064666561584a3d2d1a070000000000000e23394e63798a90918f8572604a35200b00000000000000000d22374b5c6f848f91908976614c36210c0000031629394d5f6a7f919ca4abb0b2b3b1b1b1b1b1b1b1b1b1b1b1a78b75604b36200b00000000000000000000000000000000000000000002131c3043546175869ca7b8a69a8472604a3a2a18040000000d22374c62778ca1b7a8937e6a6866646260555c5a585654514f4d4a43363a372e2e2c24221b1002000000000c21374c61768cabbca8937e69533e29150d0b07000002080b0f21364b61768ba0b6a9947f6a543f2a150000000000000000000000001a2f44596f8499aeb19b86715c46311c07000000000000000000000000142a3f54697f94a9b59f8b76604b36210b0000000002152737596e8398aeaa95806b55402b160000000013293e53687e93a8b7a28c77624d37220d00000000000000000000070b0b0700000000000000000001080b080100000000000000000001080b08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0b08010000000000000000000000000000000000000000000000000000081624323a474c555761646566676767676766656461585a544d493c382f1f170c000000000000000000000000000000000000000000000000000000000004182a3b4b60737a7c7b76635b4a36210c00000000000013283e53687d93a8a6a38c77624d37220d00000000000000000f253a4f647a8fa2a69f8a76604b36210b00000a1e324657677d919eb1b6b4aaa69d9c9c9c9c9c9c9c9c9c9c9c9b88735645311d09000000000000000000000000000000000000000000000013253646576278899eaab3a2947e695847331f0d0000000d22374c62778ca1b7b09a84807e7b79777573716f6d6b696764626054564f4b3f39301c13080000000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000192e44596e8399aeb19c87715c47321c07000000000000000000000000132536586d8297adb29d87725745321e090000000000152a40556a7f95aaae99836e593828160200000013293e53687e93a8b7a28c77624d37220d00000000000003090c131c20201c130b08010000050b0d141c201c1414120c020000060c0e141d201d1412100a0100000000000000000000000000000000000000000000000000000000000000000000060c0d151a141c20201d141a150e0c06000000000000000000000000000000000000000003162633424f58616a7176797a7c7c7c7c7c7c7b7a7976736f6a635a504c3f332a1c0e000000000000000000000000000000000000000000000000000000000b1f34475970858f91908a79634e39240e00000000000013293e53687e93a8c1a28c77624d37220d000000000000000417293a556a8095aab09a85705745321e0900000c21364b6175899eb3bbaa9f958c888787878787878787878787867e685338271502000000000000000000000000000000000000000000000008182939485a657b8c9fb4b39e8977614c3b2a180500000d22374c62778ca1b7b4a29a9593918f8d8a88868482807e7c7a7774706b655d514d413025180800000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000182d43586d8298adb29d87725d48321d000000000000000000000000071c30435470869bb0ae99846f5939281603000000000012273c51677c91a6b29c87725645321e0900000013293e53687e93a8b7a28c77624d37220d00000000000b161e21253035353025201d15090d181f22263035302629271f14060e192123263135312627251e130500000000000000000000000000000000000000000000000000000000000000040e1920232a2f2630353531262f2b23211a0f04000000000000000000000000000000000000112133445160697780868a8e90919191919191908f8e8c88847f7870655d4c473a2b1e0e0000000000000000000000000000000000000000000000000000000c22374c61778ca3a6a8937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d000000000000000a1f33475870859bb0aa957f6a5539281603000013253652687d92a7b8b49f8c7f777371717171717171717171717168604e3a1a0a000000000000000000000000000000000000000000000000000b1b2b3c4b5d6a7f95a3b5a796816c5947341f0b00000d22374c62778ca1b7c0b4b0aaa8a6a4ab9f9e9c9a979593918f8c8985807a72675f4a4336251300000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000172d42576c8297acb39d88735e3a29170400000000000000000000000b20354a6074899eb4ab95806b56402b160000000000000e23394e63788eaab49f8a76604b36210b00000013293e53687e93a8b7a28c77624d37220d000000000b1b28323636434a4a4336353127191d2a343736434b43363e3b3224141e2c353837444b44373d393023130000000000000000000000000000000000000000000000000000000000000c181f2c35383f4448434b4b4437454039362c1f170c00000000000000000000000000000000081c2f3f51626b7e8a959b9faaa5a6a7a7a7a7a6a6a4a3a69d9a948d857b6f6158483c2b1a0a00000000000000000000000000000000000000000000000000000d22374c62778ca1c1a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21374c61768b9fb4a78f7a644f3a240f0000071c3043546f849aafb5a3927d6a62595c5c5c5c5c5c5c5c5c5c5c5c534e42311e0000000000000000000000000000000000000000000000000000000e1e2e3f4b6073859bb0b49f8b77624c37220d00000d22374c62778ca1b7bdb0aba6a8abadafb1b3b1afadaba9a6a4a89e9a958f877c6c605443301c0d000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000162c41566b8196abb49f89745846331f0a00000000000000000000000d22384d62788da8b9a7927d67523d28120000000000000b20354b60758a9fb4ab8e79644e39240f00000013293e53687e93a8b7a28c77624d37220d00000003162839464b5754606054554b4437272a3b474c585460545c544f42321f2c3c494d595560555b524d41301c0c000000000000000000000000000000000000000000000000000000000d1c2a343c494d55595d546060555d5a554e493d332a1c0d0000000000000000000000000000000e23384c5d6b80939fa8b1b4b1acaaaaaaaaaaaaabacaeb1b3afa9a39b908376625a4838281602000000000000000000000000000000000000000000000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d0000000000000012273c51677c91abb39e8974604b35200b00000b20354a6074899eb4b09b85715f4c483b47474747474747474747463e3a31241302000000000000000000000000000000000000000000000000000000111d314455657b90a5b6a9947f6a5437271501000d22374c62778ca1b7b09f96919395989a9c9ea7a2a4a7a9abaeb1b4b0aba49c918172604a3b2b18050000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000014293f54697e94a9baa88b76614c36210c000000000000000000000011263b51667b90a6bcab8e79644f39240f000000000000081d31445571869cb1a7927c67523d271200000013293e53687e93a8bca28c77624d37220d000000091e324657616c737575726b60554431344759626d7375747169604f3d2d35495b636f74757471675f4d3a29170400000000000000000000000000000000000000000000000000000d1d2a3a474c5a626a6f7274757574726f6a635b4c473a2a1d0d00000000000000000000000000071b2d3e50657b8d9fb4bab4a49c979594949494959596999c9fabb0b4b0a1998678625645321e0b000000000000000000000000000000000000000000000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d000000000000061a2c3d576d8297acae98836e5443301c0800000e23384d63788da8b9aa947f6a5541342b323232323232323232323128261e130600000000000000000000000000000000000000000000000000000000011426374b5d72879cb2b09b85705544311d08000d22374c62778ca1b7ab96817c7e80828487898b8d8f919396989ca4aab4b6b19f947f6a594834200b0000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000012273c51677c91a6c6a38e79634e39240e0000000000000000000000142a3f54697f94a9b59f8b76604b36210b00000000000001152737586e8398adab95806b56402b1600000013283d53687d92a4ab9f8c77614c37220c0000000c21364b617581888a8a878073604b35374c627782888a8a877e695b4a36384d637983898a8a867d675846331f0a0000000000000000000000000000000000000000000000000005182a3b4859616e787f8488898a8a8a888480796e6158473b2a18050000000000000000000000000d22364a5c71869cabbaa99f928682807f7f7f7f7f808183868b919aa2b4b3a49c8674604b3929170300000000000000000000000000030608090a0a0a0a0a0a0a0d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d0000000000000c2135495b72879db2a8927d685336261401000010263b50657b90a5c6a6907b66513b26181c1c1c1c1c1c1c1c1c1c1c13110b0200000000000000000000000000000000000000000000000000000000000009192e3f576c8297acb49f8a75604b35200b000d22374c62778ca1b7a8937e69696b6d6f717476787a7c7e8083878c959fa9bab49f8a77624d37220d0000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000f243a4f64798fa4c5a5907b66503b26110000000000000000000000132536586d8297adb29d87725745321e0900000000000000152a40556a7f95aaae99846e593928160300000d22374d6278868d8e8b826e5947341f0b00000014293e54697e939d9f9f9d917c66513c41576c81969e9f9f9c8e79634e3944596f84999ea79f9b8b76614c36210c000000000000000000000000000000000000000000000000000b1f3448596277838c94999d9ea8aa9f9d9a958e8376625947341f120000000000000000000000000f24394f64798ea4b5b49f8b7d726c6a6a6a6a6a6a6b6c6e71767c85929faab6a496806b5746331e0a000000000000000000070c0e14181b1d1e1f1f1f1f1f1f1f1f22374c62778ca1b7a9937e69543e29140a040000000013293e53687e93a8b7a28c77624d37220d0000000000000e23394e63788ea5b6a48d78624d38220d00000011273c51667c91a6b8a38e79634e39240e00070707070707070707070000000000000000000000000000000000000000000000000000000000000000000000152a3f546a7f94a9bbaa8c77614c37220c000d22374c62778ca1b7a8937e695356585a5c5660636567696b6e72777f8b9fb4baa9947f69543f2a140000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000d22374c62778ca7b9a8937e69533e291400000000000000000000071c30435470869bb0ae99846e59392816030000000000000012273c51677c91a6b29c87725745321e0900000b2034485962737879776e64533b2a1804000000162c41566b8196abb4b4a8937e69533e44596e8499aeb5b4a5907b66503b465c71869bb1b9b4aa8d79634e38230e0000000000000000000000000000000000000000000000000a1d30414c627787989fabaeb2b3b1b1b3b2afaaa0988677624c402f1d090000000000000000000000152b40556a8095aab9a8937e695f57555555555555565759586167707e8c9fb4b49f8a76614b36210c000000000000000a0f1a21242a2d313233343434343434343434374c62778ca1b7a9937e69543e31211f170c00000013293e53687e93a8b7a28c77624d37220d00000000000215283854697e93a9b19c87725a4835200b00000013283d52687d92a7b7a28d78624d38230d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293e54697e93a9c8a18c77614c37220c000d22374c62778ca1b7a8937e695340434538454b4d4f5254565959626a7c91a4b5af99846f5a3828150200000c21364c61768baabbaa947f6a553928160f0e0d0d0d0d0d0d0d21364b61768ba0b6a9947f6a543f2a150d0d0d0d0c090300000000000b1f34485974899eb3ac97826c57372614010000000000000000000b20354a6074899eb4ab95806b56402b1600000000000000000e23394e63788ea9b49f8a76604b36210b000005192b3b485460626361595346361d0c00000000162c41566b8196abc0bea8937e69533e44596e8499aec3bba5907b66503b465c71869bb1c6c8a38d78634e38230e0000000000000000000000000000000000000000000000001025394d5f70849aa5b5b3aea69e9c9c9ea7afb4b2a499846f5e4c38240c00000000000000000000041a2f44596f8499aeb49e8975604b41403f3f3f3f4040413a464c5260697e93a7b8a9927d67523d2812000000000001121d242d36393f43464848494949494949494949494c62778ca1b7a9937e6954494637332a1c0c000013293e53687e93a8b7a28c77624d37220d0000000000091d3245566f8499afac96816c573c2b190500000013283e53687d93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000000000506060606060606060606060606060600152a3f556a7f94aabbaa8b76604b36210b000d22374c62778ca1b7a8937e69533e2d2f283236383a3c3e413b484c5e71869cb1b39d88735645321d0900000b20354b60758a9fb4ad97826d5745322824232323232323232323364b61768ba0b6a9947f6a543f2a2323232323211e160b0000000005182a3b5a70859aafb09b86705544311d080000000000000000000d22384d62788da8b9a7927d67523d281200000000000000000b20354b60758a9fb4ab8e79644f39240f0000000d1d2b36434a4d4e4c473a3628180000000000162c41566b8196abc0bea8937e69533e44596e8499aec3bba5907b66503b465c71869bb1c6b8a38d78634e38230e0000000000000000000000000000000000000000000000061a2c3d52677c91a2b4b3a1998e888686898e9aa2b4b3a1907b66513b2a1804000000000000000000021528385d72889db2af99846f5645322b2a2a2a2a2a2b2c293336424b6075889eb3ac97826c57422d170000000008141c30393d4a4e54585b5d5e5f5f5f5f5f5f5f5f5f5f5f62778ca1b7a9937e695f5f5c4c473a2a17040013293e53687e93a8b7a28c77624d37220d00000000000b20364b6075899fb4a9907b66513b26110000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000080e101a1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b19293a566c8196abb49f8a755745321e09000d22374c62778ca1b7a8937e69533e291a161e21232527292b2b3440576c8196acb59f8a75604b36200b0000081c30435472879cb1b39e8875604b463939383838383838383838384b61768ba0b6a9947f6a543f3838383838383632281b0e00000000172c41566c8196abb49f8975604b35200b00000000000000000011263b50667b90a5bcab8e79644f39240f0000000000000000081d31445571869cb1a7927d67523d2812000000000d18253035383937342a1c180a0000000000162c41566b8196abc0bea8937e69533e44596e8499aec3bba5907b66503b465c71869bb1c6b8a38d78634e38230e00000000000000000000000000000000000000000000000c2135495b70859bb0b4a29983797371717379849aa4b5af9a846f5947341f0b000000000000000000091d324556748a9fb4ab96816c5638281515151515151617171f2131455670859aafae99846f59442f1a00000008182630404d515b63696d707273747474747474747474747474778ca1b7a9937e74747471615847331f0a0013293e53687e93a8b7a28c77624d37220d000000000010253b50657b90a8b49f8a76614b36210c0000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000003111c232530303030303030303030303030303030302b3546586f849aafb39d88735e39281603000d22374c62778ca1b7a8937e69533e291403090b0e1012141618293f54697e94a9bcab8c77614c37220c000001142636576c8297acb8a696806c6157524f4d4d4d4d4d4d4d4d4d4d4d61768ba0b6a9947f6a544d4d4d4d4d4d4d4b46392b1e0e00000012283d52677d92a7baa98e79644e39240f000000000000000000142a3f54697f94a9b49f8a76604b36210b000000000000000001152737586e8398adab96806b56412b16000000000008131c202324221f180c00000000000000162c41566b8196abc0bea8937e69533e44596e8499aec3bba5907b66503b465c71869bb1c6b8a38d78634e38230e00000000000000000000000000000000000000000000000e23384e63788da3b5af9a8472635b5c5c5c6474869cb1b49f8b77614c37220c0000000000000000000b20364b60758ba9baa9947f6a543f2a1500000000000100040a152738596f8499aeb09b86715b46311c000001142636434b5f6772797f828687888989898989898989898989898a9fb4c9b49f8b8989898576614c37210c0013293e53687e93a8b7a28c77624d37220d0000000005182a3b566b8096abaf9a85705746321e090000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000011212e373a45454545454545454545454545454545453c484d61768a9fb4af99846f5a442f1a00000d22374c62778ca1b7a8937e69533e2914000000000000000013283e53687d93a8b7a28d77624d38220d0000000f253a4f647a8fa0b1b09e9681756c6764636262626262626262626262768ba0b6a9947f6a62626262626262626157483c2b190500000e23394e63788ea6b8a9947e6954372715020000000000000003182d42586d8297adb29d87725745321e09000000000000000000152a40556a7f95aaae99846f5939291603000000000000070b0d0e0c0a040000000000000000162c41566b8196abc0bea8937e69533e44596e8499aec3c8a5907b66503b465c71869bb1c5c5a38d78634e38230e000000000000000000000000000000000000000000000014293f54697e94a9b7a58f7a65544a3d3e4a56677c91a8baab927d67523d28120000000000000000000c22374c61778ca1c7a9937e69543e29140000000000000000001a2f44596f8499aeb19b86715c46311c0000081c304354606d7c868e94989b9d9d9e9e9e9e9e9e9e9e9e9e9e9e9fa8bacdbaa99f9e9e9e927d67523d28120013293e53687e93a8b7a28c77624d37220d000000000b1f34475971869bb1a9947f6a54392816030000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000081c2e3f4b505a5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5a626d8197a9baaa95806a55402b1500000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d0000000d22374b5c6d8297a0b2b09f9689817c79787878787878787878787878798ea3b8ab968078787878787878787875625a4835200b00000c2136495b73889db3af99846f5544311d0800000000000000031729395b70869bb0ae99846e593928160300000000000000000012273c51677c91a6b29d87725746321e0a000000000000000000000000000000000000000000162b41566b8096abb0afa8937e69533e44596e8399aeb0afaa907b66503b465c71869baeb0afa78d78634e38230e0000000000000000000000000000000000000000000004182a3b596e8399aeb29d87725d4b362d2d384b6075899fb4ac97816c573726140100000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c0005182b3b4b607281919ca4a9adb0b2b3b2b2b2b2b2b2b2b2b2b2b2b2b2b7c4d4c5b8b3b2b2a9947e69543f29140013293e53687e93a8b7a28c77624d37220d000000000d22374c62778b9fb5a78e79644f39240f000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000e23374b5d656f7070707070707070707070707070707070727882979fb1b4a28e79634e39230e00000c22374c61778ca1c5a8937e69533e2914050000000000000513283d53687d92a8c7a28d77624d38220d000000081b2e3e4b607482929ca5b0a79e97928e8d8d8d8d8d8d8d8d8d8d8d8d8e97a8bcb09e968d8d8d8d8d8d8d8d8d8a78624d38220d0000061a2c3d586d8398adb49e8975604b36200b000000000000000a1e33465774899eafab95806b56402b16000000000000000000000e23384e63788da6af9f8b76614b36210c00000000000000000000000000000000000000000012273d52677d91989a9a978f7a654f3a40556a7f93999b9a978b77624d3742586d8294999b9a968974604b36200b000000000000000000000000000000000000000000000b1f34475973889db3ad98826d583f2e181e32455670859aafb09b86705544311d0800000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c000b203448596a80959fb1b6b3a8aa9f9d9d9d9d9d9d9d9d9d9d9d9d9d9da6b7cbb8a79e9d9d9d927c67523d27120013293e53687e93a8b7a28c77624d37220d0000000013253652677d92abb39e8874604a35200b000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000010253a50657b848585858585858585858585858585858586888d979fb1baa89a84705b4a36210c00000c21364b61768ba7b8a9947f69543b2b201816141313141619202b3b54697e93a9baa98b76614b36210c00000000101d314556606e7d8799a1b2b3aca7a4a2a2a2a2a2a2a2a2a2a2a2a2a3a8b5c4bcb0aba2a2a2a2a2a2a2a2a8937e68533e291300000013283d53687d92a8b9a8907b6550372715010000000000000c21364c61768b989a98907b65503b2610000000000000000000000b20354b607388979a988d78634d38230e0000000000000000000000000000000000000000001025394d5f677c838585827b655d4b37354b60727e838585817a64594834364b60747f8485848179635645311d09000000000000000000000000000000000000000000000c22374c61778ca6b7a8937e69533e2914162838566b8196abb49f8975604b35200b00000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c000d22374d62778a9fb4b8a69e938d8a88888888888888888888888888879db2c8b39e898788888475614b36210c0013293e53687e93a8b7a28c77624d372210101010101c3043546d8298adad98836e5443301c07000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000051b30455a70859a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b9da5adb1b4a99f8a79634e3d2d1a070000091e32465773889eb3ad97826d59483b342b2b2929292a2b2b353b48596c8297acb49f89745746331e0a0000000002152738454b6069778399aec3c3b6b2b0aeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaea9947f6a543f2a150000000d23384d62788da3b5ac97826d5544311d080000000000000a1e334657677d8384837c665d4c38230e00000000000000000000081d31445563798284837d685a4935200c0000000000000000000000000000000000000000000a1e30414d5f676d70706d655d4c3f2e30435460686e706f6c645c4a3b2b32455660696e706f6b635b49382715020000000000000000000000000000000000000000000010263b50657b90a5c3a48f7a654f3a251012283d52677d92a7baa98d78634e38230e00000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c0014293e53697e93a9baab9e887e787573727272727272727272727272778ca1b7a9937e7272726f615746331e0a0013293e53687e93a8b7a28c77624d3725252525252526354a6074889db3a7927d685236251300000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000081d32485d72879db0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b2b3afaba29a8a7d675b49351f0f00000003162839596f8499aeb49e8a7762594d483b403f3e3e3f403c484d5962778a9eb4b19c86715c3929170300000000081c2f3f50626b7e8a99a1b2b2a8a59d9a999999999999999999999999999999999999999999999999999999917c66513c27110000000b2035485a71869bb1b39e8874604b35200d000000000000031729394d5f676e6f6d665e4d3f2f1c0800000000000000000000011426374a5b636d6f6e68604e3c2c190600000000000000000000000000000000000000000001132330414d52585b5a58504c3f2f212636434b53595b5a574f4a3e2d1d2838454b54595b5a564e493d2c1a0a0000000000000000000000000000000000000000000000142a3f54697f94a9b7a58b76614c36210c0f24394e64798eaabba7917c67523c271200000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000041a2f44596f8499aeb19b86715c46311c00192e44596e8399aeb49f8c7a696260545d5d5d5d5d5d5d5d5d5d5d62778ca1b7a9937e695d5d5a4b46392917030013293e53687e93a8b7a28c77624d383a3a3a3a3a3b3b3e4f64798ea6b5a48c77624d37220d00000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000071c31465c71869baba1a1a1a1a1a1a1a1a1a1a1a1a1a1a1aa9f9e9a958f857a675f4d3d2c1a010000000012273d52677d92a4b6a89b85786a625958555453535456595a626a78859ba8b9ab96806b56412b1600000000000e23374b5d6b80939ea8b2a69d938c87858484848484848484848484848484848484848484848484848484848173604b35200b00000006192b3c556a7f94aab8a7907b66503b2b18050000000000000b1b30414d52595a58514d4030211100000000000000000000000009192d3d4a4e575a59534e42311e0e000000000000000000000000000000000000000000000005132330393c434545423b382f2111182630353e4446454239362d20101a2832363f4446454138352c1f0e000000000000000000000000000000000000000000000002152738586d8298adb29d87725846331f0a0b20364b60758a9fb4aa95806b55402b1600000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000001a2f44596f8499aeb19b86715c46311c001c31465b71869bb0b09b85705c4d4b43484848484848484848484c62778ca1b7a9937e695448453633291b0b000013293e53687e93a8b7a28c77624d4d4f4f4f4f4f5051535c6b8196abb19c8671594834200b00000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000014293e54697f8c8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a8885807a70645c4d40301f0f00000000000b20364b6074879caab5a39b897f77716e6b696868696b6e727880899ba3b5b2a08f7a644f3a240f000000000417293a50657b909eb4b4a29a887e7772706f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6c605544311d08000000000e23384e63788da4b5ae98836e594834200a00000000000000132330393d4345433c3930221203000000000000000000000000000f1f2d36394245433d3a3123130000000000000000000000000000000000000000000000000005121d25272e30302d26231c110308141c20282e30302c24221b10020a161e212a2f302f2c23211a0e000000000000000000000000000000000000000000000000091d31455671869cb1ae99836e593a291704081d31445571869cb1ae99846f593a2a1704000000000000000d22374c62778ca1b7a8937e69533e29140d0d0d0d0d0d0d0e0f1a2e3e5b70859ab0b09b85705b46301b001d32485d72879db2ad98836e583e3530263333333333333333374c62778ca1b7a9937e69543e2f211e170b00000013293e53687e93a8b7a28c77625a6365656565656566686d7a8a9fb4aa95806b553b2b180500000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000012273b4f616976767676767676767676767676767676767674736f6b645c4e4a3d302212010000000000081d314455657b8c9faab5a79e958c8783807e7e7e7f8083878d959ea7b5b6a598826e5c4a36220d000000000a1f3346586f849aafb8a69a84766961585b595959595959595959595959595959595959595959595959595959564b4437271501000000000c2135495b71869cb1b49f8b77624d3828150200000000000005131e25272e2f2e27241d12040000000000000000000000000000010f1a21232d2f2e28251e13050000000000000000000000000000000000000000000000000000010a1012181b1b18100e0900000001080b13191b1a170f0d0700000002090b14191b1a160e0c06000000000000000000000000000000000000000000000000000b20364b60758a9fb4aa95806a55402b150002152737586d8298adb29d88735847331f0a000000000000000d22374c62778ca1b7a8937e69533e29232323232323232323252b384b5c73889db3ae99846f59442f1a001d33485d72889db2ad98836d5836251c141d1d1d1d1d1d1d22374c62778ca1b7a9937e69543e29140a030000000013293e53687e93a8b7a28c776264787a7a7a7a7a7a7b7d828a9ea9b4a28e79634e39240e0000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000c1f32424f57606161616161616161616161616161616160575e5a564f4b3e362d1f1204000000000000021527374b5d677d8c9ca4b2b3aaa49c98959493939495989ca4aab3b9b4a49c8777624d3e2d1b07000000000c21364c61768b9fb4b39e887661574c473a4444444444444444444444444444444444444444444444444444444135312719090000000000061a2c3d54697e94a9baaa95806a5645321d0a00000000000000010a1012191a18110f09000000000000000000000000000000000000070c0e181a1913110b01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f24394e64798eaabba6917c66513c2711000014293f54697e94a9b7a68c76614c37210c000000000000000d22374c62778ca1b7a8937e69533e383838383838383838393a3b4856647a8fa6b7ab96806b56412b16001c31475c71869cb1af9a856f5443301c070008080808080d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77647a8c8f8f8f8f8f909093979ea8b9aa9a84705b4a36210c0000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000214243239454b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b453945403a372e211a0f01000000000000000009192e3f4d5f677a86929da5abb0b1adaaa9a8a8a9abaeb1b6b3aea99f958678625948342010000000000010253a4f657a8faabbaa957f6a584639332a2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2f2c201d1509000000000000000f21374c61768a9fb4b39d8875604b3828160200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070001080b08010005010000000000000000000000000000000000000000000012283d52677d92a7b9a88d78634d38230e000010263b50657b90a5c4a58f7a65503a2510000000000000000d22374c62778ca1b7a8937e69534b4d4d4d4d4d4d4d4d4d4e4f53596274859bb0b7a6907b66513b261100192e43586e8398adb39e8874604a35200b0000000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c776a7f95aaa4a4a4a4a5a6a8adb4b9aa9f8c7a644f3d2d1a070000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000006141b28323636363636363636363636363636363636363228302b24221b10070000000000000000000000102130414d5c64737d878f959b9ea8a5a6a7a8a8a7a6a4a69e99928a7f75625a483b2b1802000000000012273d52677c92a7c8a48f7a654f3a291f181a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a170b080100000000000000000a1f3347586d8298adb7a6937e695645321e0c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b080100000000000000000000000000000001080b0f12100c09030000000000000000000000000000000001080b1015181c1e151d201d151d1a17130d0b05000000000000000000000000000000000001162c41566b8196abb49e8974604a35200b00000c22374c61778ca6b7a9937e69543e2914000000000000000d22374c62778ca1b7a8937e6954606262626262626262626364686e78849aa3b4b29d8774604b36200b0014293e53697e93a8b8a78f7a644f3726140100000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c776b8095aaacacacadaeb2b6c3c9b49f8c7e685c4b371f0f000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000a161e2121212121212121212121212121212121211e161a160f0d0700000000000000000000000000021223303e4b556068737a8086898d909192939392918f8c88847d766a6056483c2b1d0d00000000000013283d53687d92a8b7a28d78624d38230d04000404040404040008141c2025282824211a0f010404040404040401000000000000000000000004172a3a4f647a8fa2b4b29d8875604b3a2a1704000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b171e21262725201d14090000000000000000000000000008141c20252725211e160b000000000000000000000000000609141d20252a2d3133273135312732302c282220180d0801000000000000000000000000000005182a3b5a6f849aafb09b85705443301c0700000a1f34475973889db3ac97826d57372614010000000000000d22374c62778ca1b7a8937e696073777878787878787878787a7d838a9aa2b4aa9f917c675544311d08000e23384d63788da4b5ab96806b5544311d0800000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77677d929797979797999da5b3b8a6917c68604e3e2e1b01000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000003090b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b0903000100000000000000000000000000000000000512202e37444b5460646b7174787a7c7d7e7e7d7c7a77736e6761584b45382b1e0e0000000000000013293e53687e93a8b7a28c77624d37220d000000000000000008182630353a3d3d39362d1f1306000000000000000000000000000000000000000c22374b5c70859ab0b7a6937e695847331f100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b2933363b3c3a3531261909000000000000000000000008182630353a3c3b3632281b0b00000000000000000000030e1a212631353a3f43464849444b44494845413d37342b201d1409000000000000000000000000000b1f34485973889eb3ac97816c5736251300000004182a3a5a6f8499afb09b86715544311d080000000000000d22374c62778ca1b7a8937e6970848d8d8d8d8d8d8d8d8d8e8f93989fa9aa9f998c7e695f4d37271502000c2035495a71869cb1b39d8874604b35200e00000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c7762737f828282828284878f9da6b39e8878624d3d2d1a07000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021019263136434a4f565460626566676868676665615859524c463a32281a0e000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000001142636434b4f53524e4a3d31241302000000000000000000000000000000000000081b2e3e50667b90a2b4b39e8976614c3e2d1b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2c39464c50514f4b443726180800000000000000000008182636434b4f51504b4639281a0a00000000000000000b171e2c3537444b5054585c5d5e5560555e5d5a56534d483b35312619110300000000000000000000000d22374c62778ca6b8a8937d68533e281300000000162b40566b8095abb49f8a75604b35200b0000000000000d22374c62778ca1b7a8937e69778ca2a2a2a2a2a2a2a2a2a3a4a8adb4a69d8c837a69604f41301909000006192c3c546a7f94aab7a6907b66513c2c1906000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c7762606a6c6c6c6c6d6f727b889db3a699846f5c4a36210d000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000060c0e191e2020202020202020202020202020201f1f1d1c1815100b080100000000000000000000000000000000000009141d2530353a36434a4d505152535352514f4c473a3d3633291e160a00000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000081c30435460656868635b4e42311e0b000000000000000000000000000000000000001023384c5e70859aabb8a797816c5c4a36220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d495761656664605544362513000000000000000001142636435460646765615746382816030000000000000d1b29333d494e5560656a6d71737475757473726f6c686259534b44372f2113060000000000000000000011263b50667b90a5bcab8f7a644f3a250f0000000012273d52677c92a7baa98e78634e39230e0000000000000d22374c62778ca1b7a8937e69788da9aeaeaeaeaeaeaeafb0b3b8c4b39d887c70645c4f42322312000000000e22374d62778b9fb4ae99846f5a4935200b000000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d555757575758595d657b90a3b3a18e79644e39240f000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000010f1a21232e33353535353535353535353535353535353433312e2a25201c14080300000000000000000000000000000000000108131c2024253035383b3c3d3e3e3d3c3a37332a28211f170b030000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000b20354b60737a7d7d7968604e3a261100000000000000000000000000000000000000091c2f404f647a8d9fb5b49f8c7a644f3a240f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2135495b63767b7c7a73605443301c0700000000000000081c30435460737a7c7b75615645321e0900000000000d1d2b39464c5b636c747a7f828688898a8a8a898785817d77706860554b3f31241305000000000000000000142a3f54697f94a9b59f8b76614b36210c000000000e23394e63788ea9baa7917c67523c27120000000000000d22374c62778ca1b7a8937e69768b9999999999999999999b9da6aab4a69d918579645c4a382816020000000b203448596f8499aeb49f8c78624d392917030000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d3f42424242423f4b5d71869bb0ab96806b563c2b19050000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000f1f2c363944494a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a494846433f3a3530261e170b00000000000000000000000000000000000000070b0f131c20222527282929282725221f18120c0a0400000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000002182d42576d818f92928e7e68533d281300000000000000000000000000000000000000001222374b5c6c8197a5b2a999836e59442e190000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798a90918f8572604a35200b000000000000000b20354b6073848f91908875604b36210b000000000c1c2b3b4857616c7981888f94989b9d9e9fa99f9e9d9a96928b857d73655d4e42312313000000000000000002152838586d8398adb29c87725746321e09000000000b20354b60758a9fb4ab95806b56402b160000000000000d22374c62778ca1b7a8937e69687d84848484848484848485888d959ea8b3a39b8a7a645645321e0900000005182b3b51667c91a5b7ab96816b5746331e090000000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d372d2d2d2d2d2f3f54697f94a9b29c87725a4835200b0000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000008182c3d494e595e5f60606060606060606060606060605f5e5d5c5855504b433633291b1103000000000000000000000000000000000000000000070b0d10111213131211100c0a040000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000001d32485d72879da8a798826d58432d180300000000000000000000000000000000000000071b2e3e4c6176879c9c978b7c67513c271200000000000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8a6a38c77624d37220d0000000000000010253b50657b90a2a69f8975604b36200b0000000417293a48596276818b979ea6a9adb1b2b2b1b1b1b2b2afabab9f9b93867b68604e41311d0d00000000000000091d32455671869cb1ae98836e593928160300000000081d31445571869bb0ae99846f593a2a170400000000000d22374c62778ca1b7a8937e695f686e6f6f6f6f6f6f6f6f7073787f8a9da5b4a89d8775604b36210b000000000d20354b6073879db2b39e8976614b3726140100000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37221717171824394e64798ea6b6a48d78624d38220d0000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000001142636495b636e73757575757575757575757575757575747472716d6a6560544c46392f211103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283d53687d92a8b7a28c77624d37220e0b05000000070b192b3c5d72889db2ad97826d58422d18030000000000000000000000000000000000000000101e334657647a87878279675f4d39241000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8c1a28c77624d37220d00000000000006192c3c566c8196abae99846f5645321d090000000a1f334758627786969faab3b3aba6a99f9d9c9b9c9d9faaa7aeb4b0a49c8c7e685f4e3b2b18050000000000000b20364b60758a9fb4aa947f6a553f2a15000000000001142637576d8297acb29d88735847331f0a00000000000d22374c62778ca1b7a8937e69535259595959595959595a5b5a626a78879dabb7a5937e68533e281300000000081c304354697f94a8b9a7937e695544311d0800000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d02020b20354a6074889eb3a8927d68533625130000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000081c304354637983888a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a898886837f7a746b61574c402f2111000000000000010a10121f20202020202020202020202020202020202020202020202020202020202015130d03000000000011273c51667c91a6c6a38e79634e392c2220191b1a131c202635485a74899eb3ab96816c56412c17010000000000000000000000000000000000000000031729394a5c6472726d635b4d40301d0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000c2035495a72879cb1a8937e6853382815020000071b2d3e4c6176879ca4b4b4a79e96918c8987878687888a8d92989faab5aa9f927d6859483420090000000000000f24394e64798eaabba6917b66513c261100000000000014293e54697e93a9b7a68c77614c37210c00000000000d22374c62778ca1b7a8937e69533e4444444444444444443c484d5a647a8d9fb5af9a846f5a39291703000000011426364c61768a9fb4b29d8774604b35201100000d22374c62778ca1b7a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d0000071c3043546d8398adad98836e5443301c0700000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000b20354b607387999e9faa9f9f9f9f9f9f9f9f9f9f9f9faa9f9e9d9b98948f888076655e4c3f2e1b0b0000000005131e2528343535353535353535353535353535353535353535353535353535353535352a27201507000000000f24394e64798ea8b9a8927d6857493c38352b303025303536434d62788da8b9a9947e69543f2914000000000000000000000000000000000000000000000b1b2e3e4a4f5d5d574e493d3022120000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000e23384d63788da4b6a48d78624d38230d0000000d22364a5c6d8297a5b5aa9f9589817b7774727171717275787d838c9ba3b5b39e8977624d37271501000000000013283d52687d92a7b9a78d78624d38220d00000000000010253a50657a8fa5c3a5907a65503b251000000000000d22374c62778ca1b7a8937e69533e2f2f2f2f2f2f2f2f2f2b353c4a5c70859aafb39e89735746331e0a00000000081f3347586c8197abb7a5917c67523f2e1c08000d22374c62778ca1c5a9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d00000013253652687d92a7b39e8874604a35200b00000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000f24394e64798ea5b3b4b6b1b1b1b1b1b1b1b1b1b1b1b1b1b1b2b2b1adaaa69d95887c655d4b392917030000011323313a3d4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a3f3c332515030000000b20354b6074899eb4b19c8675635a524d483c464536434a4e54606c8196abb7a68f7a654f3a2510000000000000000000000000000000000000000000000010202e363a47474238352c1f12040000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000316283954697e93a9b19c87725a4935200b0000000f24394e64798ea0b1b49f8c80756c6662595d5c5c5c546062676e79859ba4b6a897816c5544311d080000000001162c41566b8196abb39e89745a4835200b0000000000000c21374c61768ca5b7a9937e69543e291400000000000d22374c62778ca1b7a8937e69533e291a1a1a1a1a1a1a1a19202d3e556a8095aab8a78b76614c36210c000000000417293a4e63788c9fb4b09b85715d4b37230f000d22374c62778ca7aca9937e69543e291400000000000013293e53687e93a8b7a28c77624d37220d0000000d22374d62778ca4b6a68e79634e39240e00000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000012273c51677c91a6c3b6a49c9c9c9c9c9c9c9c9c9c9c9c9c9c9d9ea8a6adb4b2a69d8b7b655746331e0a00000a1e31414d525f60606060606060606060606060606060606060606060606060606060605f55504333200d000000081d3144556d8297a9b6a49a84786e67625a5c5b5a5b54606369737f949eb0b29d8874604b35200b000000000000000000000000000000000000000000000002101b222432322d23211a0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000091e3245576f8499afab96816b563c2b1906000001162b41566b8096abb4a3927e6a6056514c483b474636434b4d525b6375869cb1b39e8874604b35200b0000000005182b3b5a6f859aafaf9a85705a3c2b19050000000000000a1f33475872889db2ad97826d5837261401000000000d22374c62778ca1b7a8937e69533e2914040404040404000613293e53687e93a8c5a28c77624d37220d00000000000c2135495b6e8399aeb5a38f7a65503d2c1a060b20364b607489959796907c66513b261100000000000013293e53687e93a8b7a28c77624d37220d0000000b2034485972879cb1a9947e695437271502000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013283d53687d92a8bdb19c868787878787878787878787878788898c90989faab7a99e8875614b36210e000010253a4d5f67747575757575757575757575757575757575757575757575757575757575756a61503c2713000000011426374e63798a9fb4b4a29a8b837d787471706f707174797e86949daeb5a3947f6a5544311d0800000000000000000000000000000000000000000000000000070d0f1d1d180e0c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000b21364b60768a9fb4a8907b65503b2610000000031729395c72879cb1b09b8570604b453837342a3231263035383d4957677d92a7b8a78f7a644f3a250f000000000b2034485973889eb3ac96816c57412c17000000000000000417293a596f8499aeb09b86715544311d08000000000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d0000000000061a2c3d50657a8fa3b5ae99846f5b4935210d081d31445563798082817c665e4c38240f00000000000013293e53687e93a8b7a28c77624d37220d00000005192b3b576c8196acaf99846f5544311d08000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013283e53687d93a8b7a28c78717171717171717171717171727274777b828c9fa9b8a7957f6a553c2c19060012283d52677d8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b7f6a553f2a1500000000092135495b697e939fabb4a99f99928d898785858587898e949ca4aeb3a59b8574604b37261401000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000011263c51667b91a9b49f8975604b36200b0000000a1e33465774899fb4aa95806a55423228221f181c1c141c20232c394d62788da2c5a6917c67513c2712000000000d22374d62778ca7b8a8927d68533d28130000000000000000162b40556b8095aab49f8a75604b35200b000000000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d0000000000000e23374b5d70859bb0b59f8c79634e3b2a1805152737495b636b6d6c665e4c402f1d0900000000000013293e53687e93a8b7a28c77624d37220d0000000011263c51667b91aab49e8975604b36200b000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77625c5c5c5c5c5c5c5c5c5c5c5c5d5861666d7b8b9fb4b29d87725a4935200c001b30455b70859aa99f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9faa9d88735d48331e00000000061a2c3d4e606a7f8d9da5b0b4aea7a89e9c9b9a9b9c9fa9a9b1b4b0a19987776255443119090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b131616130b09030000000013293e53687e93a8b7a28c77624d37220d00000000071a2d3d576c8197acae99846f5645321d090000000c21364c61768ba8baa8937e69533e29160d0b05000001080b0e21364b61768ba0b6a9937e69543e29140000000011263b50667b90a5bbaa8e79644f39240f000000000000000012273c51677c91a6baa98e78634e39230e000000000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d000000000000081c2e3f52677c91a5b7ab97826d5947341f0a09192c3d494e555756514c402f22120000000000000013293e53687e93a8b7a28c77624d37220d000000000c21364b61768a9fb4a88f7a65503a2510000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d47474747474747474747473a474c515d6b8096abb7a58d78634d38230e001d32475d72869cb2c5b9b3b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b19f8a745f4a341f00000000000f1f31424f616a7b87939ba3a8acb0b2b1b0afb0b1b3b1ada8a29a918476625948372715000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e21282c2c28211e160a00000013293e53687e93a8b7a28c77624d37220d000000000c21364a5b72879db2a8937e6853382815020000000d22374c62778ca1c6a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000152a3f546a7f94a9b49f8a76604b36210b00000000000000000e23384e63788da8b9a7917c67523c2712000000000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d000000000000001120354b6074879db2b49f8a77624c392816030f1f2c35384042413c382f2212040000000000000013293e53687e93a8b7a28c77624d37220d000000000a1e33465770859ab0aa95806a55392917030000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37323232323232323232322a33373f4e64798ea3c3a7917c67523c2712001d32475d72879cb2b9a79e9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b87725d47321d000000000001142432434f5e65747e868d92979a9d9faaa1a1a89e9c98938d857c6f6158483b2b19090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a2832363d41413e3632281b0a000013293e53687e93a8b7a28c77624d37220d000000000e24394e63798ea5b6a48d78624d38230d000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0b6a9947f6a543f2a1500000002162838586e8398adb19c87715645321e0900000000000000000b20354b6075899eb4ab95806b56402b16000000000d22374c62778ca1b7a8937e69533e2914000000000000000013283d53687d92a8b7a28d78624d38230d00000000000000081d314455697e94a7b9a995806b5745321e08010f1a21232b2d2c26241d1204000000000000000013293e53687e93a8b7a28c77624d37220d0000000003172939556a7f95aab09b85705746331e0a0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37221c1c1c1c1c1c1c1c1d181f22364b61768baabba8937e69533e2914001d32475d72879cb2b39e8986878787878787878787878787878787878787878787878787867c67523d271200000000000006152532404c56606871787d8285888a8b8c8c8b8986827e7870665e4c473a2b1d0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002162838454b535656534b45392816030013293e53687e93a8b7a28c77624d37220d0000000417293a546a7f94a9b19c87725a4835200b000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba0c5a9947f6a543f2a15000000091e32455671879cb1ad98836e58382816030000000000000000081c30435470859bb0af99846f5a3a2a17040000000d22374c62778ca1c7a8937e69533e2914000000000000000013283d53687d92a8c8a28d78624d38230d00000000000000011426374b6176899eb3b39e8875604b3626140100060c0e161817110f090000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000f253a4f647a8fa8b49f8a76614b36210c0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0707070707070700040a1e324657758a9fb4aa957f6a55402a15001d32475d72879cb2ad98837171717171717171717171717171717171717171717171717171675f4d392510000000000000000715212f38454b535a62686c7073757677767674716d68625a514c40332a1c0d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091e32455660686b6b68605745321e090013293e53687e93a8b7a28c77624d37220d0b0b0b0c1f33465870859ab0ab96816b563c2b1906000000000d22374c62778ca1b7a8937e69533e291400000000000000000c21364b61768ba7aea9947f6a543f2a150000000b21364b60758a9fb4a9947f6a543f2a1500000000000000000001142636576c8297acb29d88735847331f0a0000000c21364c61768ba9baa8937e69533e29140b0801000001080b13283d53687d92a8bbaa8c77624c37220d0000000000000000091e3346576b8096aab8a7937e695443301c08000000000002010000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000b20354b6075899eb3aa917b66513c26110000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000031628395f758a9fb4ab95806b56402b16001d32475d72879cb2ae99836e5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c524d41301e0a000000000000000003111a2731363c494d53575b546061616160565c58534d493c38301f180c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60747d81817d75604b36210b0013293e53687e93a8b7a28c77624d3722212121212122364c61768a9fb4a8907b65503b261000000000000d22374c62778ca1b7a8937e69533e291400000000000000000b20354b607389979998927d67523d28120000000f24394f64798eaabba5907b66503b26110000000000000000000013293e53687e93a8b7a68c77614c37210c0000000a1f33465874899fb4aa957f6a553f3023201c141b1b141d20243140546a7f94a9b49f8a75604b35200b0000000000000000031729394d62788b9fb4b29c8773604b352010000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000081d3144556e8499aeab96816c563b2b180500000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000020354a5f758a9fb4ab95806b56402b16001c31465b71869bb0b09b8671594847474747474747474747474747474747474747474747463d3930231301000000000000000000000a151d202b35383d4236434b4b4c4c4b4538433e38352c241d1204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002172d42576c8192969693826d58422d180013293e53687e93a8b7a28c77624d37363636363636373f52677d92aab49e8975604b36200b00000000000d22374c62778ca1b7a8937e69533e29140000000000000000081c304354647a8284837e72604a35200b00000013283d52687d92a7b8a78c77624d37220d0000000000000000000010253a4f657a8fabbca5907a65503b25100000000417293a5d72879cb2af99846f5d4c4038353026303026313539414e5e6f8499afb29d88735443301c080000000000000000000b203448596d8298adb6a5917c67513f2e1b080000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000115273753697e93a8b19c8671594834200b00000013293e53687e93a8c2a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600192e43596e8398aeb49f8b77624c402f32323232323232323232323232323232323232323127251e130500000000000000000000000002090e192023282d2630353637373632282d292320190e0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aabab9b86705b46311b0013293e53687e93a8b7a28c77624d4b4b4b4b4b4b4c4d4f5d6f8499afae99846e5645321d0900000000000d22374c62778ca1b7a8937e69533e29140000000000000000011426364a5c646c6f6e68605443301c07000001172c41566c8196abb39e8873594834200b000000000000000000000c21364b61768b9fb5a9937e69543e291400000000172c41576c8196acb49f8c7b665e534e4b4336454537444b4e545f687c8d9fb5ac97826d573626140100000000000000000005192b3b4e64798ea2b4b09b85705d4b37220e0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000e23384e63788da5b6a48c77624c37220d00000013283e53687d93a9a7a48c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013283d53687d92a6b7ab96816c5e4c3d2c1d1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c12100a0100000000000000000000000000000000060b0d1317141c20212221211e1618130d0c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c7762606060606060606162646a7b90a1b3aa937d68533828150200000000000d22374c62778ca1c8a8937e69533e291400000000000000000008182d3e4a4f575959534a4336251300000005192b3b5a70859aafaf9a846f5a3b2b1805000000000000000000000a1e33465772879db2ad97826d583727150100000010253a50657a8fa1b3ab9e897c70686360545b5a5a5b55606369717d8a9eabb4a2907b66503b261100000000000000000000000d22364a5c6f849aafb4a38f7a654f3c2c190600000000000000000000000000000000000013293e53687e93a8c2a28c77624d37220d0000000000000c2135495b72889db2a7927d67523d28120000000e24394e63798b9192908672604a35200b0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000b21364b6075889db3b59f8d7c665b493b2a1b0b00070707070707070707070707070707070000000000000000000000000000000000000000000000000001080b0c0c0c0b09020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b8a28d78767676767676767676777a808a9fb4b49f8b77614c37220c0000000000000c21364c61768baabbaa947f6a553828160f0e0d0d0d0d0d0d0b0710202d36394244433e35302518080000000b2034485973899eb3ab96816b56412c16000000000000000000000003172939596e8399aeb09b86715544311d080000000e23374b5d6f8399a7b7a79e91857e787572717070717275797e86929ea8b8a89a8472604a35200b0000000000000000000000071b2d3e51667b90a4b6ae99836e5b4935210c00000000000000000000000000000000000013283e53687d93a9a7a48c77624d37220d000000000000061a2c3d576d8297a9a798826d58432d180300000c21364a5b63777c7d7b74605443301c070000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600091e324556677c91a0b1ab9e89796359473928190900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bda8968d8b8b8b8b8b8b8b8b8b8c8f959fa8baa998826d5947341f0a0000000000000b20354b60758a9fb4ad97826d564532282423232323232322201c13101b22242d2f2e29201c1308000000000d22374d62778ca7b8a7927d67523d2812000000000000000000000000152a40556a7f95aab49f8a75604b35200b000000081c2e3f4d6278899da6b3b3a39b938d8a8786858586878a8e949ca4b4b4a79e8a79635443301c070000000000000000000000001020354a6073869cb1b49f8b78634d38230e0000000000000000000000000000000000000e24394e63798b9192908672604a35200b000000000000000f24394f647a8b929290826d58432d18030000071a2d3d4a5962676866605645362513000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600031628384d5f6d8297a3b5a79d87776157463727150100000000000000000000000000000000000000000000000000000002090b0f0f0c0a030000000000000000000000000000000000000000050b0d13171a1c1d1d100e08000000000000010a10121d1d1c1a16120c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bdb4a8a2a0a0a0a0a0a0a0a0a1a2a4aab4b2a89f8a78634d3a2a1804000000000000081c30435471869cb1b39d8875604b4538393838383838383835302518080d0f171a19130b0700000000000011263b51667b90a6bbaa8e79644e39240f00000000000000000000000011273c51667c91a6baa98e79634e39230e00000000112034485a63798899a1aeb4b0a8a99f9c9b9a9a9b9d9faaa9b1b4afa29a897a645b4936251300000000000000000000000000071c304354687d92a6aca2937e69533e29140000000000000000000000000000000000000c21364a5b63777c7d7b74605443301c07000000000000000d22364a5c64787c7d7b73604b35200b000000000f1f2d3b484c5152504b4538281808000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000a1a30414b6075859ba6b6a59b8575615544311d1506000000000000000000000000000000000000000000000000000a151d202424211e160b0000000000000000000000000000000000080d192022282c3031323225221b100300000005131e25283232312f2b27211f170c060000000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bdc2b6b1b1b1b1b1b1b1b2b4bac7b9bfb2a0988a7c655a49351c0c0000000000000001142636576c8196abb8a695806b6056524f4d4d4d4d4d4d4d4a433625130000020404000000000000000000152a3f556a7f94aab49f8a75604b36200b0000000000000000000000000d23384d62788da8b9a7927c67523d27120000000005192b3c4a5b63788390999fa9abafb2b2b0afafb0b2b3afacab9f9a918479645c4b3d2c180800000000000000000000000000001325364b6074889997918476614c36210c000000000000000000000000000000000000071a2d3d4a59626768666056453625130000000000000000071b2d3e4a5a62676865605544311d0800000000010f1d2a34373c3d3b3632281a0a00000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000121e3245566277889da8b5a3998373604b433324140400000000000000000000000000000000000000000000010f1a283236393a3632291b10020000000000000000000000000001111c232b34373d41454647473a372e21100000011323303a3d48474644413c373329211a0f01000000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bdb6a49c9b9b9b9b9b9c9d9fa9b1b5c2ad988279655d4c3c2c190000000000000000000f24394e64798c9fb5af9e9580756c676463626262626262605443301c0b00000000000000000000000003162838586e8398adb19c86715645311d090000000000000000000000000b20354a6074899eb3ab95806b56402b1600000000000d1d2d3d4a5a626e7b848a92969a9d9fa9a1a1a99f9d9a96928b847c70635b4b3e2e1f0e000000000000000000000000000000081d324556667c84827c6f615846331f0a000000000000000000000000000000000000000f1f2d3b484c5152504b453828180800000000000000000010202d3c494d5252504b44372715010000000000000d181f22272826211e160a0000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000031628384859647a8a9eaab3a197816d625042312212020000000000000000000000000000000000000000000f1f2c38454b4f4f4b46392e201000000000000000000000000008141c2e373b484d52565a5c5d5d4f4b3f2e1b08000a1e30414d525d5d5b5a56524c473a352c1f14060000000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bdb19c86868686868686888a8f9ca4b5ab95806b5c4c3f2f1e0e0000000000000000000d22364a5c6c8197a0b0af9e9588817c797878787878787772604a392816030000000000000000000000091e32455672879cb1ad98826d5838271502000000000000000000000000071c30435470859ab0af99846f5a3a2a180400000000000f1f2d3c484d5d656e767c818488898a8b8c8b8a8885817d776f665e4e493d2e201000000000000000000000000000000000021528384c5e666f6c665e4c463a29170400000000000000000000000000000000000000010f1d2a34373c3d3b3632281a0a0000000000000000000002101e2c35383d3d3b35312719090000000000000000050b0d1213110b0902000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000a1a2b3b4a5c657c8c9fb4b19f95806a604e402f20100000000000000000000000000000000000000000061a2c3d495660646461574b3f2e1b0800000000000000000000081826303f4b4f5962686c6f717272655d4b37220e0010253a4d5f677272716f6b6761584e493d3124140500000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c7871717171717172747a869ca7b09e8f7a644f3a2a1704000000000000000000071b2d3e4b607382919ba3b4a69d96918e8d8d8d8d8d8d8d836f5746321e0900000000000000000000000b21364b60758a9fb4a9947f69543f2a140000000000000000000000000000132536576c8197acb29d88735847331f0a0000000000010f1e2b353f4b505861676b6f7374757676757473706c686259514d40352c1f100200000000000000000000000000000000000a1a2f404c505957514c4033291b0b000000000000000000000000000000000000000000000d181f22272826211e160a000000000000000000000000000e192023272825201d1509000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000d1d2d3e4c5e687d929dafaf9e937e685e4c3e2e1e0e000000000000000000000000000000000000000c2135495b6374797975645d4b37220d00000000000000000001142636434b5d656f777d81858687877b654f3a25100012283d52677d87878684807c766e635b4e4231231300000000000000000000000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77625c5c5c5c5c54606576899eb3ae99836e5847331f0a00000000000000000000101d314455606e7c85959faab3aba7a4a2a2a2a2a2a29f8b76614b36210c00000000000000000000000f243a4f64798faabba5907b65503b2610000000000000000000000000000013283e53687d93a8b7a68c77614c37220c000000000000000e19202f373a464c52565a5d5560616160555e5a57534c473b3930211a0f010000000000000000000000000000000000000011222f383b44423c382f1f170b000000000000000000000000000000000000000000000000050b0d1213110b0902000000000000000000000000000000060c0d1213100b080100000000000000000000000001080b08010000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000f202f404e5f6a7f949fb1b49f8c7c665c4b3c2c1d0c0000000000000000000000000000000000000e23394e6379898e8f8a7b644f3a250f000000000000000000081c304354606b7b848b92969a9b9c98836e58432e19001c32475c71869c9c9b9996918a837969604e41311e0e00000000000000000000000000000000000000000000000000040708090a0b0b0b0b1b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d46464636434b58697f94a9b49f8b76614c37210d0000000000000000000002152737444b5f6776808a9fb4bcb5b2b0aeaeaeaeaea78c77614c37220c000000000000000000000013283d53687d92a7a7a08c77614c37220c00000000000000000000000000000f243a4f64798fa2a7ab907a65503b2510000000000000000005111c232933363d414537444b4c4c4b443745413d37342a241d120600000000000000000000000000000000000000000004111c23262f2d26241d120400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c141d201d14090d040000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000011121314150616c8197a1b3aa9f8a7a645b493b2a1b0b000000000000000000000000000000000014293e53697e93a7a895806b55402b160000000000000000091c2f404b6072808d999fababafb1af9a856f5a45301a001e33495e73889eb2b0afaba99f988b7e695f4e3c2b19060000000000000000000000000000000000000002090b1115191c1d1f20202020202030455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37313126303a4c61768a9fb4aa937e68533b2b1905000000000000000000071b2d3e4f61697c88959faab2ab9f9c9a9999999999998974604b35200b000000000000000000000012273d52677d8e92928f826e5947341f0b00000000000000000000000000000b20354a6072848f92928d7a644f3a250f00000000000000000000080b171f21272c2f2631353637363127302c28221f180d0900000000000000000000000000000000000000000000000000090f111a17110f0900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c171f2126313531262821150700000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000003132333434b60738399a3b4a89e8979635947392819090000000000000000000000000000000014293e54697e93a9ab95806b56402b1600000000000000000e23384c5e6b80969fabb4b4aca5aa9f98836e58432e19001c32475c71869c9faaa5adb5b4a99f927d685a493520090000000000000000000000000000000000070a161e21262a2e31333435353535353535455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37221c141f3347586e8398aeaf9a8570594834200b0000000000000000000d22364a5c697f919da6b4a49c928b87858484848484847d675544311d0800000000000000000000001025394d5f67797d7d7a72604a3b2a18040000000000000000000000000000071c30435460737a7d7c78645c4b37220d000000000000000000000000040a0c12161a141d202121201d151b17130d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1c29333637444b44373c33251500000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000005151d3144556075859ba4b6a79d87776157463727150100000000000000000000000000000014293e54697e93a9ab95806b56402b160000000000000006192b3c50657b909eb5b9aa9f97908c8a887b65503a25100013283d53687e888a8c90989fabbab49f8b78624d37271501000000000000000000000000000004101b222832363b40434748494a4a4a4a4a4a4a455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0417293a51667b90a6b59f8c77624d37220f0000000000000000031628394f647a8c9fb2b3a199867d7672706f6f6f6f6f6e675f4d3726140100000000000000000000000a1e30414d5c64676864605443301d0c00000000000000000000000000000000132536445560656867635a4b3e2e1b0800000000000000000000000000000000010001080b0c0c0b08020002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c11110f0b07000000000000000000000000000000000000000000000000000000000000000000000417293a464c59556055555043331c0c000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000114263745576176869ca6b6a59b8575615544311d1506000000000000000000000000000014293e54697e93a9ab95806b56402b16000000000000000b2035495a70859ab0b9a89e8b817a767573655d4b37230e0011263a4e60687375777b828d9faabaa997816c5544311d08000000000000000000000000000c181f2d3638454b5155595c5d5e5f606060606060595a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000c20354b6074889eb3ab947f69543d2c1a0600000000000000091e3246576e8399abb7a59983746861585b595959595959524d41301909000000000000000000000000011323303e4a4e52524f4a43362513000000000000000000000000000000000008182637444b5052524d493c2e2010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f22262724201c130800000000000000000000000000000000000000000000000000000000000000000a1f334658616e7475736a61503a2a17040000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000919283947586278889da8b5a3998373604b43332413040000000000000000000000000014293e54697e93a9ab95806b56402b16000000000000000d23384d62788da2b4b49e8a7a6c6561585d504b3f2e1c08000b1e31424e535e5961666d7c8c9fb4b49e8974604b35200b0000000000000000000000000e1c2a343e4a4f5660666a6e717274757575757575756e6470859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00081d3144556c8196abb19b86715b4935210c000000000000000c21364b61768a9fb4b29d877560564c463a4444444444443c3930231200000000000000000000000000000513202d36393d3d3a353025180800000000000000000000000000000000000009192631353a3d3d38352c1e10020000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000000000000000000000000000000000002080b1012100c09030000000000000000000000000000000000000003111c2a33373b3c393530251808000000000000000000000000000000000000000000000000000000000000000c21364c617683898a88806a5847331f0a0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000a1b2a3a495a647a8a9eaab3a197816d6250423122120200000000000000000000000014293e54697e93a9ab95806b56402b160000000000000013283d52687d92a7c0a9947e695c504c473a3a372e21110000021324313a3d3b474c505e6c8197acb9a88f79644f3a240f00000000000000000000000e1e2b3a474c5c646d757b7f838688898a8a8a8a8a8a8b826e70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00011527374f64798ea4b5a38d78634e382310000000000000000f243a4f647a8fa9baa9947f6a56453833292f2f2f2f2f2f27251d1205000000000000000000000000000000010f1a2124282825201c1308000000000000000000000000000000000000000009141d202528272320190e0000000000000000000000000000000000000000000000000b171e21262725201d140900000000000000000000000000000000000000000000000000000009151d20252725211e160b00000000000000000000000000000000000011212e3a474c50514f4a433625130000000000000000000000000000000000000000000000000000000000000012283d52677d929fa69e8c76614c37210c0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000c1c2c3c4a5c667c8c9fb4b19f95806a604e402f201000000000000000000000000014293e54697e93a9ab95806b56402b1600000000000002172c41576c8196acb7a58c77614c3e37332925231c110300000006131e26282a3437404f647a8fa4c6a8937e68533e2913000000000000000000000c1d2b3c4859616d7a82899095989c9d9e9faa9f9f9fab9f8c7770859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000922364a5c71869cb1aa95806a553e2d1b0700000000000012273c52677c91a7c7a48f7a644f38281f171a1a1a1a1a1912100a01080b1013130e0c0700000000000000000000070d0f12130f0b07000000000000000000000000000000000000000000000001080b1013120e0c060000000000000000000000000000000000000000000000010f1b2933363b3c3a3531261909000000000000000000000000000000000000000000000000000a192731363a3c3b3632281b0d00000000000000000000000000000000081c2e3f4b5861666664605443301c0900000000000000000000000000000000000000000000000000000000000013293e53687e93a8b8a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000e1e2d3e4c5e687e929dafaf9e937e685e4c3e2e1e0e000000000000000000000014293e54697e93a9ab95806b56402b1600000000000003182e43586d8398adb29d8772584733211f17100e08000000000000020b1113181f22364b60768ba8b9aa957f6a55402a1500000000000000000004182a3b485a6277828c989ea8aaaeb1b2b2b1b1b1b1b1b1ab8e7870859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000071b2d3e546a7f94abb29c87725c4a36220800000000000013283d53687d92a8b7a28d78624d38230d04000404040404000009141d2025282824211a0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2c39464c50514f4b443726180800000000000000000000000000000000000000000000000a1a2837444b4f51504b46392b1d0d0000000000000000000000000000000e23374b5d65777b7c7972604a37261401000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000010202f404e606a7f959fb1b49f8c7c665c4a3c2c1d0c0000000000000000000014293e54697e93a9ab95806b56402b16000000000000051a2f445a6f8499afb09b86715b3a2a180a0400000000000000000000000000040b1e32455674899eb4ab96816b56412c160100000000000000000b1f344759627887979fabb3b1a9a4a79e9d9c9c9c9c9c9c9c8c7670859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000001022384d62788b9fb4a58f7a644f36261401000000000013293e53687e93a8b7a28c77624d37220d000000000000000009192631353a3d3d39362d1f1306000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d49576165666460554436251300000000000000000000000000000000000000000000021628384555606567656157483c2b1905000000000000000000000000000010253a4f657b8b90918e836f5544311d08000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000021222314250616c8197a1b3aa9f8a7a645a493b2a1b0b00000000000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b00000000000000000000000000000000021628385e73899eb3ac97826c57422d170200000000000000071b2d3e4c6177889ca5b5b4a49c948f8b898887878787878786806a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000000b2034485a6f849aafab96816c5443301c08000000000013293e53687e93a8b7a28c77624d37220d0000000000000001142637444b5053524e4a3d3124130200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c2135495b63767b7c7a73605443301c07000000000000000000060805000000000000000000091e32455660747a7c7b75625a4834200b0000000000000000000000000000152b40556a8095a9a69f8b75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000004132333434b60738399a3b5a89e887863594739281909000000000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000001e34495e73899eb3ac97826c57422d1702000000000000000d22364a5c6e8298a6b6a89e92867f7a767372717171717171716a6170859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000005192b3c52687d92a8b39d8874604b35200b000000000013293e53687e93a8b7a28c77624d37220d00000000000000081d31445560656868635b4e42311e0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798a90918f8572604a35200b0000000000010a10121b1d1b110f090000000000000b21364b6075868f91908978624d38220d0000000000000000000000000000162b40556b8095aabcab8a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000005151d3144556075859ba5b6a69c8777615746372715010000000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000f24394f647a8ea0b2b49e8a7d736a6461575d5c5c5c5c5c5c5c555a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000d21364b61768a9fb4a6907b65503b2510000000000013293e53687e93a8b7a28c77624d37220d000000000000000b20354b60737a7d7d7968604e3a2611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8a6a38c77624d37220d0000000005121d252730323026231c1204000000000e24394e63798ea4a6a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000114263745576177879ca6b6a59b8575615544311d150400000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d170200000000000001162c41566b8196abb4a2907c6860544f4c463947474747474747455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000a1e3346576d8398adac97826d57422d18020000000013293e53687e93a8b7a28c77624d37220d00000000000003182d42586d828f92928e7e68533d2813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8c1a28c77624d37220d00000000122330393c4648453b382f2212000000000f24394e64798ea3c2a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000919283947596378889ea8b5a3998373604b4333231201000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000031729395c72879cb1af9a85705e4a433636332932323232323231455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000000031729394f647a8f989a9886715c47321c070000000013293e53687e93a8b7a28c77624d37220d000000000000001d32485d72879da8a798826d58432d18030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000e1e30414d525b5d5a504c402f1d0c0000000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000a1b2a3a495a647a8a9eaab3a197816d615041301f0f000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000a1e33465774899fb4aa95806a55403025211e171c1c1c1c1c1c30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000000000b22374b5c667c8384827b654f3a2510000000000013283d52687d92a7b7a28c77624d37220f0b050005000608192c3c5d72889db2ac97826d57422d18020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000006192c3c4d5f67707270665e4c3b2a180400000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000c1c2c3c4a5c667c8c9fb4b19f947f6a5f4d3d2d1b0a0000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000c21364c61768ba8baa8937e69533e29130c0a0300070707071b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000000000081b2e3e4d5e666e6f6d655d4b37230e000000000011263b50667b90a5c3a38e79634e3a2d221f181b1a1b19202535495a74899eb3aa95806b55402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000c2135495b677d8587857c665947341f0b00000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d060606060606060002091e324556758a9fb4aa95806a55402b150000000000000000000000000000000000000000000e1e2d3e4c5e687e929eafb59f8d7d675c4a3928160300000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1c6a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000000102030404d51595a584f4b3f2e1c0800000000000e23394e63798ea5b7a8937e69594a3d37342a3030302b3536434d63788da8b9a8937e69533e2914000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000e23384d63788c9b9d9a8b77614c37220c00000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37221b1b1b1b1b1b1b1b1b151d21364b60768baabba8937e69533e29140000000000000000000000000000000000000000000010202f404e606a80959fb1ab9f8a7a645745321e0e00000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000000000002122230393c4345433a372e21110000000000000b20354a6074879db2b29d8777635b524c483b4645463c494d54606d8297acb6a48d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000114263654697e94abb2a9927d67523d281200000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37303030303030303030312731363e4e63798ea3c4a7927c67523d271200000000000000000000000000000000000000000000021222314250616d8197a2b4a89c8675604b3c2b1906000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000000000000004121d24272e2f2d25231c1103000000000000071c3043546b8096a7b7a59c86796e6762595c5b5a5b5c5a6268727f959fb1b19c87725b4935210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00081c3043546e8499aec7ac97826d573c2b1905000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77624d454545454545454545454638454b4f5c6a7f95aab7a68d78634e38230e000000000000000000000000000000000000000000000004132433434b6073849aa6b6a496816c5a4835200b000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000000000000090f11191a18100e080000000000000000001325364c6177899eb3b5a49c8c837c777471706f707174787e86959eafb4a2927d67523d2c1a06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000b20354b6074899eb3c7b29d87725a4835200b000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c77625b5b5b5b5b5b5b5b5b5b5b5b5c5660646c7a8a9eb4b29d88735b4935210c00000000000000000000000000000000000000000000000006151d3144556177889db3b49f8b78624d38230d000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000000000000000000040503000000000000000000000000081f344759677d919faab5ab9f99928c898685858586898d939ca4afb1a39a846f5f4d391f0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000f24394f64798ea7b9cab6a58d78624d38220d000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013293e53687e93a8b7a28c78707070707070707070707070707172757a818a9ea8b8a795806b563d2c1a0600000000000000000000060606060606060606060606060606011527374759677d92a7b8aa95806b55402b16000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000000000000000000004182a3b4d5f687e8c9ca4b0b4aea7a89e9c9b9a9b9c9ea8a8b1b4afa0978575614c41301e0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0114263754697e94a9c5d3c3a7927d67523d2812000f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000013283d53687d92a8bdb09b858585858585858585858585858686888a8f969fa9b8aa9e8976614c36210f00000000000000020c12141b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b192a3a4b6075899eb3af9a85705a45301b000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e33495e73889eb3ac97826c57422d17020000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000000000000000000000c1d30414e60687b86939ba3a8acb0b3b1b0afb0b1b3b1adab9f9a9082756157463323130100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d081d3144556f8499aec4cac2ad97826d583c2b19060f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000012273c51677c91a6c4b5a39b9a9a9a9a9a9a9a9a9a9a9a9a9b9c9d9fababb4b3a79e8c7c665846331f0a00000000000006141f2729303030303030303030303030303030303030303144556f8499afb29d87725d48321d000014293e54697e93a9ab95806b56402b16000000000000031325365b70859bb0af9a846f5a452f1a05000000000000000000000000000000081e33485d73889db2ac97826d57422d18010000000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000132331414e5d65737d858d93979a9e9fa9a1ab9f9e9c97938b847b6d615746392917050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0b20354b6074899eb3bcb4bcb29d87725a4835200b0f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000f24394f64798ea6b4bab5b0b0b0b0b0b0b0b0b0b0b0b0b0b0b1b2b2aeaba79e96897c665e4c3a2917040000000000001424323b3e454545454545454545454545454545454545454537586d8297adb39e88735e49331e000014293e54697e93a9ab95806b56402b1600000000030a161e30435471869cb1ad98836e58432e1903000000000000000000000000000000071c32475c71879cb1ae98836e593a291d150900000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000000000000051323313f4b55606870787e8185888a8b8c8b8a8986827e786f655d4c4639291b0b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0f243a4f64798fa7b9ab9fabb7a58d78624d38230d0f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000000000000000000000000000b20354b6073889a9fa9a1a1a1a1a1a1a1a1a1a1a1a1a1a1ab9f9e9d999591898176665e4c402f1c0c0000000000000b1b32424f545b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b6d8297acb39e89735e49341e000014293e54697e93a9ab95806b56402b160000000a161e2832374a6074899eb3aa95806b55402b160000000000000000000000000000000004192f44596e8399aeb09b867158473531271916080000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013293e53687e93a8bca28c77624d37220d0000000000000000000000000000000000000000000000000000000000000513212e37444b535a62686c7073747576767574716d69625a504b3f33291b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d14263754697f94a9b49f8a9fb4a7927d68523d28130f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000081d314455647a84898b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a898784807b756c61584c40302211000000000000031729394f606970707070707070707070707070707070707070707070708297acb39e89735e49341e000014293e54697e93a9ab95806b56402b1600000a1b283238454b5564798ea7b7a6907b65503b26100000000000000000000000000000000000142a3f54697f94aab49f8b7661504b44373426160200000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0013283d53687d92a4ab9f8c77614c37220c000000000000000000000000000000000000000000000000000000000000000311192631353c484d53575b5e5560616160545c58544d483c372e1e170b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d1d3144556f8499afab988398adad98826d583c2c190f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000406050000000000000000011426374a5c646f74767676767676767676767676767676767574726f6b6660564c473a302212040000000000000a1e334657697e8585858585858585858585858585858585858585858585889db3b39e89735e49341e000014293e54697e93a9ab95806b56402b160003162839454b566066738399aeb29d8874604b36200b00000000000000000000000000000000000d23384d62788b9fb4aa97816f656055514434201000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000d22374d6278868d8e8b826e5947341f0b00000000000000000000000000000000000000000000000000000000000000000009141d202b35383e424537444b4c4c4a4336423e38342b231c1103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d20354b6074899eb49f8c798ea5b29d87725a4935200f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000090e10191b1b150b0802000000000009192d3e4a4f546061616161616161616161616161616160575e5d5956514b4538332a1c1204000000000000000c21364b61768b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9da6b8b39e89735e49341e000014293e54697e93a9ab95806b56402b1600091e324557606e757c8599a1b4a0937e685544311d0800000000000000000000000000000000000b2035495a6d8297a3b49f97837b746c62513e2e1b07000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000b2034485962737879776e64533b2a18040000000000000000000000000000000000000000000000000000000000000000000001080e192022292c3027313637363530252d292220190d080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220f243a4f647a8fa8b19b8672879db2a58d78624d38230f24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000003111c23262e31302a201d1509000000000010202d3636434a4b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b45394844403c3631271f170c0000000000000000000e23384e63788daab0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b3b8c4b39e88735e49331e000014293e54697e93a9ab95806b56402b16000b21364b6075828a919ba2a99f958272604a37271502000000000000000000000000000000000006192b3c4b617585969faaa1999089816c5c4a36220d000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0005192b3b485460626361595346361d0c0000000000000000000000000000000000000000000000000000000000000000000000000000050b0d13171b151d202121201c1318140d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3722152737546a7f94a9ab96816d8298ada8927d68533d281324394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000011212f383b4446454036312719090000000002101b22253035363636363636363636363636363636363228322f2b26201d150a04000000000000000000000d22374c62778ca1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1ab9c87715c47321c000014293e54697e93a9ab95806b56402b160013283d52687d929fa9b0b49f8b7f73605443301909000000000000000000000000000000000000000e1e3346576175818c9fb4aea89e8f7a644f3a240f000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b00000d1d2b36434a4d4e4c473a36281800000000000000000000000000000000000000000000000000000000000000000000000000000000000000020002080b0c0c0b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37221d3144556f8499afa6917c687d92a8ad98826d583c2c1924394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000009192f3f4c50595b5a554b443727150200000000000708131c20212121212121212121212121212121211e161d1a16110b09020000000000000000000000000b1f3447596f838b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8c7f69543f2a14000014293e54697e93a9ab95806b56402b160014293f54697e94aab2b7ad988277655d4c3d2d1a070000000000000000000000000000000000000008182e3f4c5e66778297acb6b1a8907b66513b2611000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000d18253035383937342a1c180a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d372220354b6075899eb4a48c7763788da6b29d88735a49352024394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00021527374c5d656e70706a605544311d080000000000000000070b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b09030004010000000000000000000000000000000005182a3b54656f7676767676767676767676767676767676767676767676767676767669614f3b2712000014293e54697e93a9ab95806b56402b16000f24394f647a8c979da5b4a098897c655b4a36210e000000000000000000000000000000000000011426364b5d667c89979fb3a49c968a77614c37220c000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000000008131c202324221f180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b0b0801000100000000000000000000000000000000020001080b0b0801000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3722253a4f647a8fa8b19c87715b73889db3a68d78634d382324394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00081d314455657b8386857f75604b36200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d3747545761616161616161616161616161616161616161616161616161616160574f4332200c000014293e54697e93a9ab95806b56402b16000d22364a5c647a8187929fa9a79e8b79634e3d2c1a060000000000000000000000000000000000081c304354657b8c9ea7a69e90868079635947341f0a000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000070b0d0e0c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d1419131c20201d141a160f0d0800000000000000000001080b11171b151d20201c1419140c0b0400000000000000000000000000000013293e53687e93a8b7a28c77624d37222737556a7f94aaac97826c586e8398ada8937d68533e2824394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000b20364b60748a999b9a927e68533d281300000000000000000000000000010508090a0b0b0b0b0b0b0b0b07000000090f1118150c0a03000000000000000000000019293739464c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b453932251503000014293e54697e93a9ab95806b56402b1600071b2d3e4b5c646c737d8b9fb4a99a846f5b4935210c00000000000000000000000000000000000b20354b6073869caab39e887b716b635b493a2a1804000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d182022292e253035353126302b25221b100700000000000009141d20262c302731353530262e29221f180c010000000000000000000000000013293e53687e93a8b7a28c77624d37223144556f849aafa7927c6753687e93a8ad98836d583d2c24394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000c21364c61768ba9b0a9947f6a543f2a1500000000000000000001080b11161a1d1e1f20202020202020201c0c0a121c24262e2a211e170b000000000000000000000b191b29333636363636363636363636363636363636363636363636363636363632281b150700000014293e54697e93a9ab95806b56402b16000010202e3e4b4f54606a7f94a9b4a28d78634e38230e000000000000000000000000000000000011263b51667b90a4b6a6907c665e564e493d2c1c0c00000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003060002080b0802000703000000000000000000000000000000000000000000000000000000000b171e2b34373f4336434a4b444845413a372e221b100200000412192631353b414537444b4b4336443e37342a1c140800000000000000000000000013293e53687e93a8b7a28c77624d3722364b6075899fb4a58c77624e63798ea7b39d88735b493524394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000c21364c61768ba1c7a9947f6a543f2a15000000000000000009141d20262b2f323435353535353535353532211f222f383b433f3633291b0f01000000000000000000000b171e212121212121212121212121212121212121212121212121212121211e160a000000000014293e54697e93a9ab95806b56402b1600000210202e3736434c61778ca6b7a8937e69533e29140000000000000000000000000000000002172c41576c8196acb39e8874604a4038352c1f0e0000000c22374c61778cabbca8937e69533e291405000000000000061426375a70859aafb09b85705b46301b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b1015181b1e151d201d151e1c1915110c0903000000000000000000000000000000000000000000000c1b29333b484c54595d546060555e5a564f4b3e362e2013050715223037444b51575b5e556060545d59534c473b30261808000000000000000000000013293e53687e93a8b7a28c77624d37253a4f657a8fa8b29d8772594a6074889eb3a68d78634e3824394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000013283e53687d93a8b7a28c77624d37220d000c21364c61768ba1b6a9947f69543f2a1400000000000008131c2631353b404548494a4a4a4a4a4a4a4a4a4736332f404c5158544b46392c1f0f0000000000000000000000030a0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b090300000000000014293e54697e93a9ab95806b56402b1600000002101b222534475973889db2ac97826c57422d1702000000000000000000000000000000051b30455a70859aafaf9a846f54433023211a0e000000000b20354b60748a9fb4a9947f69543b2b1f18161413141416192131445570869bb0ae99836e59442e19000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000709151d20252a2d3133273136312733312e2a26211e160b09000000000000000000000000000000000000000c1c2a39464c5962696e7274757574736f6b645c4f4a3e302313152533404d5560666c707374757574726e6961594b43362618080000000000000000000013293e53687e93a8b7a28c77624d372738556a7f94aaad97826d5843546e8399aea8937e68533e28394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000012273c51677c91a6b7a28d78624d382314131422374c61778ca1b6a8937d68533e281300000000000a18253037444b50565a5d5e5f60606060606060605c4c46404c5e666d6a6157493d2c190900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293e54697e93a9ab95806b56402b1600000000000708182a3b5b71869bb0ae99846f59442f1a04000000000000000000000000000000081d32485d72879db2ad98826d583625130c060000000000081d31445573889db3ad97826d59483b342a2b2929292a2b2c353e4b6074889eb3ac97816c57422c170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050f1a212731353b3f43464849444b4449484643403c363228241d12080000000000000000000000000000000004172a3a4757616d777e8387898a8a898885807a71645c4d413020223343505e66747b8185888a8a8a8987837e776a6054433625130000000000000000000013293e53687e93a8b7a28c77624d373145566f849aafa7927d68523654697e94a9ad98836e583d2c394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000010253b50657b90a5c2a58f7a65503d302a29292e3b4e64798ea3c5a6917c67513c2712000000000a1a2836434a5560666b6f72737475757575757575757161584c5e667c837f75635b4937261401000000000003090b1012100b09020000000000000000000000000000000001080b1012100c0a03000000000000000014293e54697e93a9ab95806b56402b16000000000000001b30455b70859ab0af9a85705a45301b05000000000000000000000000000000091e33485e73889db3ac97826c57422d170000000000000001142637596f8499aeb49e8a7762594c483b403f3e3e3f403c494d5c677c91a7b8aa927d68533d2813000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d18202d3637444b5054585b5d5e5560555e5d5c5855514b46393930231c110300000000000000000000000000000a1f3347586175828b94989c9e9fa99f9d9a968f867a675f4d3e2d304050616a7c8790969a9e9fa9a89f9c99938a7f72605443301c0c00000000000000000013293e53687e93a8b7a28c77624d37364b60758a9fb4a68d78624d394f64798ea8b39d88735b4935394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b00000000000000000000000000000000000000000000000000000000000d22374c62778ca4b5ab96806b5b4c403f3e3f3e4b596a7f94a9b8a78e79644e39240f0000000215283845546069747b808487898a8a8a8a8a8a8a8a8a86766155667c8d98948679635544311d08000000000a161e21252725201d150a000000000000000000000000000009141d20252726211e160b0000000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000012283d52677d92a6b7a89b85776a625958555453535456595b636c7a899eb3b49f8b76614c37210c0000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1d2b343e4a4e5560656a6d7073747575757473716e6a666157514c40372e211507000000000000000000000000091d2f404c617686979faaaeb2b3b1b1b2b3afaba49c8c7d675c4a36374d5f6a7f919da6acb0b3b2b1b1b4b2aea99f948272604a3a291704000000000000000013293e53687e93a8b7a28c77624d373a50657a8fa9b29d88735a49354b6074899eb3a68e78634e39394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b00000000000000000000000000000000000000000000000000000000000b1f34475971869cb1b49f8a79665e57545354565c6477889eb3b39e8873604a35200b000000091d32455660727e8790959a9d9e9fa99f9f9f9f9f9fa4917c676073879caba49c8774604b35200b0000000a1b2832363b3c3a3631271a0d0000000000000000000000000c192631353a3c3b3632291b0b00000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000c21364b6175879db2b5a39b897f77716d6b696869696b6e7278818b9ea7b8a798826d5847331f0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2d3b484c5c646d747a7f828688898a8b8a898886837f7b766e665e504b3f3325160800000000000000000000000f24384c5e6f849aa4b4b4b0a89e9c9c9da6aab4b5aa9f8b7a644e3d4455677c919eb2b7b4ab9f9d9b9c9fa9b2b7b4a0937e695846331f0a000000000000000013293e53687e93a8b7a28c77624d3738556a7f95aaad98836d583c3144556f8499afa8937e68533e394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000005182a3b556a7f95a7b8a89d887c726c6968696c717a869ca6b8aa97826d5443301c070000081b2e3e4b607483939da5abafb2b3b1b1b1b1b1b1b1b1a8937d68677c91a4b6b39d8875604b35200b000009192839454b5051504b45382b1d0d000000000000000000000c1c2937444b4f51504b4639291b0b000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000a1e324657667c919db4b5a79e948c8683807e7e7e7f8083878d969fa9b6a79e8976614c3a2a1704000000000000000000000000000000000000000000000000000000000000000000000000000000000e1e2d3d4a59626d7982899094989b9d9e9faa9f9e9d9b9895918a837c70655d50433326160400000000000000000004172a3a51667c91a2b4b4a39b8f898786888c959faabaa99a846f5b494b6074879cb2b9a89e948b88868789909da5b7b39e8976614c36210d000000000000000013293e53687e93a8b7a28c77624d37455670859aafa8937d68533e2637546a7f94a9ae98836e593d394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b0000000000000000000000000000000000000000000000000000000000000d21364c6176899eabb8a69d9187827f7e7e81868f9ca4b6b49f8b78624d3625130000000d22374b5c6d8197a1b2b7b2a8a69e9c9c9c9c9c9c9c9c9c907b666e8398adb8a7937e685544311d0800011426374557606567656056483b2b190500000000000000000417293a465560656765615746392917030000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d170200000000000000031629394c5e6a7f929ea8b4b3aaa49c98959493939495989da5abb4b3a59d897b655847331c0c0000000000000000000000000000000000000000000000000000000000000000000000000000000008182b3c4a5b6377828c979ea7a9adb0b2b2b1b0b1b2b2b1adaaa99f9991857b6a6150443322120000000000000000000a1f3347586f849aafb6a49b857a7471717377808c9fb4b3a28e79634e51667c91a5b6ab9e8a7e76727171757c879da9b9a7937e69543b2b18050000000000000013293e53687e93a8b7a28c77624d374b60758a9fb4a68e78634e39253a4f647a8fa8b39e88735b4a394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b0000000000000000000000000000000000000000000000000000000000000a1e334657677d8d9fabb7b3a49c97949394969ba3b1b6b39f947f6a5a483518080000011426364f647a8f9fb1b7a69d928c8887878787878787878782746074899eb3b39e8875604b3727150100081d31445560757a7c7a7462594834200b00000000000000000a1f33465861737a7c7b75615746331e0a0000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d170200000000000000000b1b2f404f616a7e8a989faaafb3b1adaaa9a8a8a9abaeb2b2ada79e94877a655d4b3a2a180000000000000000000000000000000000000000000000000000000000000000000000000000000000132536495a637987989fabb3b8c5b9a89e9c9b9b9c9c9ea7a4a9b0b4aea39b8d806b6250402f180800000000000000000c21374c61778a9fb4b29c86756460545c59626b7d92a3b5a9947f6a54576d8297acb49f8c7b6961585c556066798b9fb4b09b8671594834200b0000000000000013293e53687e93a8b7a28c77624d3a50657a8fa9b39e88735b493520364b6075899fb4a68e79634e394e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000000031729394d5f697f8d9da5afb4b2aca9a8a9abb1b4b0a79e92816c614f3c2b19000000081c3043546e8398adb8a79d887d77737271717171717171716e6062788da7b9ac97816c564531190900000b20354b60748790918f8778624d37220d00000000000000000c21364c6176868f91908876614c36210c0000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000000122232434f606877828b939a9ea6a5a6a7a8a8a7a6ab9f9d9891897f74645c4b3f2e1c0c00000000000000000000000000000000000000000000000000000000000000000000000000000000071c3043546278899da6b5b4a8b3b8b49e8a8786868687898b8f949aa2b0b5ab9f95806b5e4c362513000000000000000011273c51667c91aabbab927d68574a433b484d6071869bb0af99846f5a5572879cb1ad98836e5d4c473a444b5b6c8297acb5a38c77624d37220d0000000000000013293e53687e93a8b7a28c77624d38556a8095aaae98836e593d2c1d3144556f859aafa8937e6953364e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b000000000000000000000000000000000000000000000000000000000000000b1b30414f61697b87919a9fa8a6a7a8a7a6a99f9b93897d6c635143321e0e0000000b20354b6074899eb4b39e89786861585c5c5c5c5c5c5c5c5c5851667b91a6c5a6917c66513827150000000b20354b6075899ea6a595806b55392816030000000000000013253653697e93a4a69f8a76614c36210c0000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d170200000000000000000004152532424e59626d777e84888c8f9192939392908f8b87837c756a60564a3e2e211000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a6072849aa7b7a89e939ea7ab9680727171717274767a7e858e9ba3b4b59e907c665443301c0700000000000000152a40556a7f95aab49f8b76614c39302b344154697e94a9b29d87725660758a9fb4a6917b66513f332a313d50657a90a9baa7917c67523c27120000000000000013293e53687e93a8b7a28c77624d455670859aafa9937e69543e29152737556a7f95aaae98836e54434e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b0000000000000000000000000000000000000000000000000000000000000000122332424f5d65747c84898e91929392918f8a857e75675f5145342515000000000e24394e63798ea8b9ab95806b594c473a47474747474747474353687d93a8b8a38e78634e39230e000000081c3043546f8499aeb09b85705746321e09000000000000071c3043546e8399aeb09b86715746331e0a0000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d170200000000000000000000071524313b484d5861686f73777a7c7d7e7d7c7b7976726d6660564b45382d201003000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b51667b90a2b4ab9e8a7e899eb09b8671585b5c5d576164697079859aa2b4b19c8673604a35200b00000000000003192e43586e8398adb19c87725847331c18253a4f647a8fa4b49f8a756062788daab9a88c77624c37221720364b60758a9fb4ab96816b56412c160100000000000013293e53687e93a8b7a28c77624d4b60758a9fb4a78e79644e392410253a50657a8fa9b39e8874604a4e64798ea3b9a7917c67523c27120000000000000000000000000000162b40556b8095aab5a08a75604b35200b0000000000000000000000000000000000000000000000000000000000000000041424323f4b5560676f75797b7d7e7d7c7975706861574d41342616070000000012273c52677c91a7c6a5907b65503b332a32323232323232323f54697e94a9b6a18c76614c37210c00000001142636546a7f94a9b49f8a76614b36210c0000000000000b20354a6074889eb3ab96816b56392917030000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000000000006131d2b343a474c535a59626566676868676664615758514b453832281a0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000003162839586d8298adb49f8c7b6e8398ae9f8b76614c4739464c4f545c6474849aabb6a48f7a65503a25100000000000000417293a5b71869bb0ae99846e593a2a170c21364b61768ba7b8ab8d7762647a8fa4b39e89745948341f0b1d32455671869bb0ae99846e59442f190000000000000013293e53687e93a8b7a28c77624d50657a90a9b39e8974604b35200b21364b60758a9fb4a78e79634e4e64798ea3b9a7917c67523c27120000000000000004060606060606162b40556b8095aab5a08a75604b35200b0606060606050000000000000000000000000000000000000000000000000000000614212e37444b525560646667696866646056534b463930231608000000000013283e53687d93a8b7a28d77624d3822181c1c1c1c1c1c1c2a40556a7f95aab5a08b75604b36200b000000000f253a4f647a8fa8baaa907b65503b26100000000000000f24394e64798ea7b8ab917c66513c2611000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d1702000000000000000000000000000d18202a33373e3b474c505152535352514f4b46393c3632281d150a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000091e32455773889eb3ae99836e687e93a8ab917c67513c2933363a3e4a5663788c9fb4ab95806b56402b160000000000000a1f33465874899eb3ab96816b56412c160a1e33465773899eb3a48f7964667c91a6b19c86715c3b2a1805152838596e8398aeb19c86715c3b2a180400000000000013293e53687e93a8b7a28c77624d556b8095aaae99846f5443301c091e32455670859ab0a9937e69544e64798ea3b9a7917c67523c271200000000050b0d191b1b1b1b1b1b1b2b40556b8095aab5a08a75604b35201b1b1b1b1b1b1b13110b0200000000000000000000000000000000000000000000000003111927313637444b4e51525352514f4b45383632291b1305000000000000142a3f54697f94a9b6a18b76614c36210c000707070707152b40556a8095aab5a08a75604b35200b000000000b20364b6075899fb4ab95806b5639291603000000000013253654697e93a9b59f8b76614c37210c000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b06000000000000000000000000000000091e34495e73899eb3ac97826c57422d17020000000000000000000000000000050c181f22282a34373a3c3d3e3e3d3b3a36332927201d150a0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60758ba7b8a8937e6963788da5ac97816c573c2b1e21242d38495a72879cb1ae99846e59442f190000000000000c21364c61768ba7b9a8937e69533e2914031729395c71869bb1a6917b66687e93a8ae99846e59442f1900162b41566b8096abb49e89745947341f0b00000000000013293e53687e93a8b7a28c77624d5670859ab0a9947f695436261402162838566b8095abae99836e544e64798ea3b9a7917c67523c27120000000d181f222e303030303030303040556b8095aab5a08a75604b35303030303030303028261f14060000000000000000000000000000000000000000000000000009151d20273135393c3d3e3d3c3a363228211e160b0000000000000000152a3f556a7f94aab6a08b76614b36210c000000000000152b40556a8095aab5a08a75604b35200b00000000081d3144556f859aafb09b85705746321e0a00000000071c3043546e8399aeb19c86715847331f0a000000000014293e54697e93a9ab95806b56402b16000000000000051b30455a70859aafb09a85705b45301b00000000000000000000000000000000021527385e73899eb3ac97826c57422d170200000000000000000000000000000000040a0c13181f222527282928272624211e17110b0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d23384d62788da2c5a7917c675a72879db29c87725a4835200c0f1a2c3c5a70859aafb09a85705b45301b0000000000000f24394f64798ea4c5a6907b66513b261100192e44596e8399aea8937d686a8095aaab96816c56412c170113283e53687d93a8b9a88c77614c37220c00000000000013293e53687e93a8b7a28c77624d60758a9fb4a88f79644f3a240f0011263b50667b90aab39e8974604e64798ea3b9a7917c67523c271200000d1d2a343744454545454545454545556b8095aab5a08a75604b4545454545454545453e3a312414000000000000000000000000000000000000000000000000000002080b151d2024262829282724201d150c0a03000000000000000000142a3f54697f94a9b7a18c77624c37221614110f0d0b08152b40556a8095aab5a08a75604b35200b0000000002152737556a7f95aab49f8a76614b36210c000000000b20354a6074899eb3ac96816c573a2a1704000000000014293e54697e93a9ab95806b56402b16000000000000051a2f445a6f8499afb09b86705b3a291709020000000000000000000000000003091d31455674899eb4ab96816c56412c17010000000000000000000000000000000000000000050b0d101112131312110f0c0a0300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e24394e63798ea3b8a7917c67576d8297aca58d78624d38220d001b30455a70859aafb09b86705b46311b00000000000012273c51677c91a6bcab8e78634e39230e01162c41566b8196abaa957f6a6c8297aca9947e69543f29140010263b50657b90a5c6a48f7a644f3a250f00000000000013293e53687e93a8b7a28c776250657b90a9b49e8975604b35200b000c21364b61768b9fb4a78e79644e64798ea3b9a7917c67523c27120005182a3b474c595b5b5b5b5b5b5b5b5b5b6b8095aab5a08a75605b5b5b5b5b5b5b5b5b5a534e42311a0a0000000000000000000000000000000000000000000000000000000001080b0f11121413110f0b090200000000000000000000000013283e53687d93a8b9a48f79644f392e2b29272422201d152b40556a8095aab5a08a75604b35200b000000000010253a50657a8fa9baaa907b66503b2611000000000f24394e64798ea7b8a6917c67513c271200000000000014293e54697e93a9ab95806b56402b1600000000000003192e43586e8398adb29d8772584633201d150f0d08000000000000010a1012161e21364b60758ba8b9aa957f6a55402a15000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e24394e63798ea3b8a7917c6752677c92a7a8927d6853362513001b30455a70859aafb09b86705b46311b000000000000152a3f546a7f94a9b59f8b76604b36210b0014293e54697e93a9ac97816c6e8499aea6917c66513c2711000e23384d63788daabba7927c67523d271200000000000013293e53687e93a8b7a28c7762546b8096abaf9a846f5544311d08000a1e32465771869bb0a9947f695464798ea3b9a7917c67523c2712000b1f344759626e70707070707070707070708095aab5a08a73707070707070707070707068604e382715020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b50667b90a5c3a9947f69574b3f403e3c3a383531272f40556a8095aab5a08a75604b35200b00000000000b21364b60758a9fb4ab95806b563929170300000114263654697e94a9b6a48c77624c37220d00000000000014293e54697e93a9ab95806b56402b1600000000000002172c41576c8196acb59f8b76614c3d36312725221b100200000005131e25272832363f4f647a8fa4c6a8937e68533e29130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040001080b0b07000003000000000000000000000000000000000e24394e63798ea3b8a7917c675262778ca4ad98836d5443301c071b30455a70859aafb09b86705b46311b000000000002172d42576c8297acb29d88735645321e090011263c51667b91a6ae99836e70869bb0a48e79644f39240f000b20364b60758a9fb4aa947f6a553f2a1500000000000013293e53687e93a8b7a28c77626073879db2aa947f6a55372715010003162939566b8096abb09b85716064798ea3b9a7917c67523c2712000d22374c6277838585858585858585858585879db2c5b09a8585858585858585858585857e685645311d0900000000000000000000000000000000040001080b0b0801000401000000000000000000000000000000000000000000000000000d22374d62778ca5b6b29d8775655d595653514f4d4b44374442556a8095aab5a08a75604b35200b0000000000091e32455670859ab0b09b85705746331e0a0000081c3043546e8499aeb19c87725947341f0b00000000000014293e54697e93a9ab95806b56402b160000000000000013283d53687d92a8bcab937e695b4e4b45383a372e2010000001132330393c38454b4f5d6c8196abbaa98f7a644f3a250f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090b1115191d141d20201c131c1814100b070000000000000000000000000e24394e63798ea3b8a7917c67525971869cb19e8874604a35200b1b30455a70859aafb09b86705b46311b0000000000011426375a6f849aafb09a85705b38281602000f24394e64798ea3b09b857072889db2a88c76614c37210c00081d31445572879db2ad97826d58422d1800000000000013293e53687e93a8b7a28c7871747f94a5b6a68f7a644f3a240f00000011263b50667b90a8b5a3947f74717a8ea3b9a7917c67523c271200152a3f556a7f949a9a9a9a9a9a9a9a9a9a9a9da5b7c8b4a29a9a9a9a9a9a9a9a9a9a9a9a8a74604b36200b000000000000000000000003090b1116191d141c20201d141d1a16120c0a040000000000000000000000000000000000000000000b2034485972879cb2b7a59b857b736e6b6966646260555c5957556a8095aab5a08a75604b35200b000000000002162838566b8095abb49f8a76614b36210c00000b20354b6074899eb3ac97826c573b2a180500000000000014293e54697e93a9ab95806b56402b16000000000000000e23384d63788da3b4b39e89796b6460565c4f4b3e2e1b08000a1e30414d525d5660646c7b8b9fb4b49f8a75604b36200b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070a161e21262b2f32263135353025312e2a25201c1308050000000000000000000e24394e63798ea3b8a7917c6752566c8196aba68e79634e39240e1b30455a70859aafb09b86705b46311b0000000000081d31445572879db2ad98826d58432d1800000c21364c61768ba7b29d8772748a9fb49e89745847331f0a00021527375a6f859aafaf9a85705a38271502000000000013283d53687d92a8bdb19b858689949dafb29d8873604a35200b0000000b21364b6075899eb4ae9d948986869cb1bba6917c66513c271100172d42576c8297acb0b0b0b0b0b0b0b0b0b0b2b7c3b6c0b4b0b0b0b0b0b0b0b0b0b0b0a88c77624d37220d000000000000000000070a161e21272b2e32263035353126322f2b27211f170c090000000000000000000000000000000000000005182b3b556a7f94a5b7b5a39b908883807e7c79777573716f6d6a6a8095aab5a08a75604b35200b00000000000011263b50667b90aabbaa907b66503b261100000f24394f64798ea7b8a7927d67523d27120000000000000014293e54697e93a9ab95806b56402b16000000000000000c2135495b70859bb0b8a79e8a8079757371645c4b37220d001025394d5f677273767a818c9faabbaa97826d5544311d08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004101b222832363c40444749444b4a434846433f3a35302520180d01000000000000000e24394e63798ea3b8a7917c675251667b91aaa9947e69543727151b30455a70859aafb09b86705b46311b00000000000b20354b60758a9fb4aa957f6a55402a1500000a1e33465774899eb39f8974768ba9b19c86715c3a2a17040000182d42576d8297acb29d88725645311d09000000000012273c52677c91a7c3b5a39b9c9ea8afb9a895806b5443301c07000000091e3245566d8297a9baaea89f9c9ca4b5c2a5907b65503b261000162b41566b8096a8a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19f8b75614b36210c0000000000000004101b222832363c40444749434b4b44494744413d363329241d12070000000000000000000000000000000000000d21364b6175879da6b4b5b1a69d999593918f8d8a88868482807e8298adb5a08a75604b35200b0000000000000c21364b61768b9fb4ab96806b563f2e180c0c192b3c54697e94a9b6a58d77624d38220d0000000000000014293e54697e93a9ab95806b56402b160000000000000006192c3c51667c919fb1b8a89f958e8a89867a644f3a250f0012273c52677d87898a8f969faabbb49f8c78634d37271502000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f2e3638454b5155595c5e556060545d5c58544f4a4336342b1d14090000000000000e24394e63798ea3b8a7917c67524b61768a9fae99846f5544311d1b30455a70859aafb09b86705b46311b00000000000d23384d62788daabba7927d67523d28120000031729395c71869bb1a98b76788da3ae99846e59442f19000000152a3f556a7f94aab49f8a75604b36200b00000000000f24394f64798ea5b4bab5b1b1b4b3b0a99e8a77624c36251300000000021628384e63798b9faab0b3b4b1b1b5bab4a48d78624d38230d000f24394f647a8a8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b826e5746321e090000000000000c171f2e3639454b5155595c5e546060555e5d5956524c463a382f211a0f01000000000000000000000000000000000a1e324657637988979faaaeb3b3aeaba8a6a4ab9f9e9b9997959398a0b2b5a08a75604b35200b0000000000000a1e33465770869bb0b19c87725d4b362721212335485a6f849aafb29d87725a4834200b0000000000000014293e54697e93a9ab95806b56402b1600000000000000000e24384c5e6c81979fb0b4b4abaa9f9e98836d58432e18001c31475c71869c9e9fabacb4b4aa9f937e695b49351909000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1d2a343e4a4f5660666a6e72737475757473716d696560544c483b3126190a00000000000e24394e63798ea3b8a7917c6752465770859bb09e8975604b36201b30455a70859aafb09b86705b46311b000000000010253b50657a90a5c7a48f7a654f3a2510000000192e44596e8399aea38d787a8fa5ac96816c57412c1702000012273c52677c91a7bcab8d78634d38230e00000000000b20354b6073879a9fa9a1a1aa9f9d9a958b7b65594834180800000000000a2135495b677d8c969b9e9faba1a1a89f9986715a4835200b000d22364a5c647476767676767676767676767676767676767676767676767676767676766e64533928160300000000000d1c2a333e4a4f5760666b6e72737475757473726f6b676158514c40362d1f1104000000000000000000000000000000031629394a5b6377828b93999da6a4a7a9abadafb1b3b1aeacaaa8adb2beb5a08a75604b35200b00000000000003172939556b8095aab6a48f7a65544437373638434d62788b9fb4ac97816c573c2b19050000000000000014293e54697e93a9ab95806b56402b160000000000000000091d2f404b607381909aa2a8acb0b1af9a856f5a45301a001e33495e73889eb2b1b0acaa9f998b7f69604e3c2c19000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e1e2c3b474c5c646d757c80848788898a8a898886837f7a736b62594b4437271a0a000000000e24394e63798ea3b8a7917c675239556b8095aaa88f7a654f3a251b30455a70859aafb09b86705b46311b000000000013283d53687d92a8baa98c77624c37220d000001172c41566c8196aba58f7a7c91a7a9947e69543f29140000000f243a4f64798fa4c6a5907b66503b26110000000000081d314455647a84898b8b8b8b8a88858077655d4b3b2b18000000000000061a2c3d4d5f67788085888a8b8b8b8b898479634e3c2b190600071b2d3e4a55606161616161616161616161616161616161616161616161616161616161575346361b0b00000000000d1d2a3a474c5c646e757c80838788898a8a89888784807c766f665e4e4a3d2f2211010000000000000000000000000000000b1b2d3d4a59626d777e84888c8f919496989a9c9ea7a2a4a6a9afb4c0b5a08a75604b35200b000000000000000e24394e63798ea2b4b09a847360554e4c4c4e52616d8298aab6a48f7a65503a2510000000000000000014293e54697e93a9ab95806b56402b16000000000000000000121d314455606c7b858d93979b9c9d98836e59432e19001c32475c71879c9d9c9a96928b837a69614f42311e0e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1d2c3c4959616d7a83899195999c9e9fa99f9e9d9b98948f8880776a605545382715020000000e24394e63798ea3b8a7917c67523c50657a8fa8aa957f6a5539291630455a70859aafb09b86705b46311b0000000001162b40566b8095abb49f8974594834200b00000014293e54697e93a9a7917c7e93a9a6917c66513c27110000000c22374c61778ca8b9a8937e68533e29130000000000011426374a5c646f74767676767573706b62594b3f2f1d0d000000000000000f1f30404d5a626b70737576767676746f635b49351e0e00000010202d37444b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b463936281800000000000a1a2a3b4858616d7a83899195999c9e9fa8a99f9e9c9996928a847c70635b4c402f200f000000000000000000000000000000000f1f2d3b484c5962696e73777a7c7e81838587898b8d8f91939aa2b4b5a08a75604b35200b000000000000000c21364a5b70859ab0b4a2978173686361616367707f94a0b2b19c8673604a35200b000000000000000014293e53697e93a8a995806b55402b1600000000000000000001152737444b5e6670787e82858788887b65503b25100013283e53687e88888785817d776e645c4f4332241400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004182a3b495a6277828c989ea8aaaeb1b3b1b1b1b2b2b1ada9a69d968a7f73605645311d130000000e24394e63798ea3b8a7917c67523c4b6075899fb09a85705746321e30455a70859aafb09b86705b46311b0000000003192e43586e8398adb19c87715c3b2b180500000011263c51667b91a6a9937e8095aba48e79644f39240f0000000a1f33475874899eb3ab96806b56412b1601000000000009192d3e4a4e546061616160565e5b554c483b2f21110000000000000000011222303c484d565b546060616161575a4e493d2c1a00000000021019273136363636363636363636363636363636363636363636363636363636363633291b180a000000000215273848596276828d989ea8aaaeb1b3b1b1b1b1b2b2aeabaa9f9a918579665e4c3e2d1909000000000000000000000000000000010f1d2a343b474c535959626467696b6d6f727476787a7c7e849aafb5a08a75604b35200b00000000000000071a2d3d50657b8f9db4b19f97867d787676787d85949dafb49e917c665443301c0700000000000000000e24394e63798a90908b7b65503a25100000000000000000000009192731404c505b63686d70727373655d4b37230e0011263a4e6068737371706c6862594e4a3e322515060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1f344759627887989fabb4b2aaa4a69e9c9b9c9c9ea7a5abb3b2a89e948374604b4130180800000e24394e63798ea3b8a7917c67523c45566f849aaf9f8a76614b362130455a70859aafb09b86705b46311b00000000031729395b70869bb0ae99846f59442f1a000000000f24394e64798ea3ab95808297ada88c77614c37210c00000004182a3a5c71869bb1ae99836e59442e190000000000000010202d3636434a4b4c4c4b4538454037342b1d110300000000000000000004121e2b35384136434a4b4c4c4b463939352c1f0f00000000000009151d2021212121212121212121212121212121212121212121212121212121211e170b000000000000091d314556627786989fabb4b0a8ab9f9d9c9b9b9c9d9faba8afb4afa29b8a7c665c4a37271502000000000000000000000000000000000d181f2a34373e3b474c4f525456585a5c57606365676a8095aab5a08a75604b35200b00000000000000000f23374b5d6a7f949fa9b1a49c938e8c8b8d929aa2afa99f95806b5e4d3625130000000000000000000c21364a5b63767a7b77655d4b37230e000000000000000000000009151d2f383d494e53575b5c5e5e504b3f2f1c08000b1f31424e535e5d5c5b57534c483b362d201507000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2e3e4c6177889ca5b5b4a59c948f8b8887868687898c90969ea7b0b4a199836e5f4d36261401000e24394e63798ea3b8a7917c67523c3854697f94a9aa907b66513b2630455a70859aafb09b86705b46311b000000000a1e33465773889eb3ab96816c56412c17010000000c21364c61768ba7b19c86879db29e89745847331f0a00000000192e44596e8399aeb19b86715c3a2a170400000000000002101b22253035363636363228302b2220180d000000000000000000000000000e1920232b25303536363636322823211a0f010000000000000002080b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0a03000000000000021628384b6074869ca4b5b3a29b938e8b8887868687888a8d929a9fabb4a89e8c7a645544311d080000000000000000000000000000000000050d181f22292a34373a3c3f41434539454b4d4f556a8095aab5a08a75604b35200b0000000000000000081c2e3f50616a7f8b9fb4b5b1a8a3a1a1a3a7b0b4b49f8b8072604a40301808000000000000000000071a2d3d4a5761656561584b3f2e1c0800000000000000000000000001111c232c35383e42464748483b372f21110000021424313a3e49484745413d37342b211a0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22364a5c6e8398a6b6a99f93877f7a76737271717274767b8088969fb0b2a1927d675443301c08000e24394e63798ea3b8a7917c67523c394f64798ea7ab96816b563b2a30455a70859aafb09b86705b46311b000000000c21364b61768ba7b8a9937e69543e2914000000000a1f33465874899eb3a49c9da5b19c86715c3a2a170400000001162c41566b8196abb39e89745847331f0a00000000000000000708131c20212121211e161b160d0b05000000000000000000000000000000060b0d16131c20212121211e160e0c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091e3245566a7f94a4b5a79e90857e797573727171727375787d848d9da5b6aa9c8674604b36200b00000000000000000000000000000000000000050b0d14181f222527292c2e302832363840556a8095aab5a08a75604b35200b000000000000000000111d314455606d7e93a8bec5b9b3b1b1b3b8c5bea9937e6d605544311d1300000000000000000000000f1f2d39464c50504c473a2e2111000000000000000000000000000000090e1a2123292d3032333325231c110300000006141f2628333332302c282220180d070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f243a4f647a8fa0b2b49f8b7e736a6461575c5c5c5d5861656b7581969fb1b29d8873604b35200b000e24394e63798ea3b8a7917c67523c354b6074899eb19c867159473430455a70859aafb09b86705b46311b000000000f24394e64798ea3c5a6917b66513c2611000000000417293a5c71869bb1b6b1b2b7ae99846f59442f1a000000000013293e53687e93a8b9a88c77614c37210c0000000000000000000000070b0c0c0c0b090300000000000000000000000000000000000000000000000000070b0b0c0c0c0903000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b6075899eb4b39e897c70686360565c5c5c5c556063686f7a879da8b5a4917c66513c26110000000000000000000000000000000000000000000000050b0d0f121416181a161e212b40556a8095aab5a08a75604b35200b0000000000000000091d2f404b607382939cadb5aca79e9c9c9ea7acb4ae9c938273604b4130190900000000000000000000010f1b2933363b3b37332a1c11030000000000000000000000000000000000060c0e13181b1d1e1e100e08000000000000020b11131e1e1c1b17130d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001172c41566c8196abb4a2917c6860544f4b463946473a474c5056606c8197aab7a68f7a65503a2510000e24394e63798ea3b8a7917c67523c3043546e8398ae9f8b77614c3730455a70859aafb09b86705b46311b0000000011273c51667c91a6c4a38e78634e39230e0000000000192f44596e8499aec3c6c7c1ac96816c57412c17020000000011263b50667b90a5c6a48f79644f3a240f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b51667b90a8b6a5917c665e534e4b4538464637444b4e535c64788a9fb4ad98836e58432e1900000000000000000000000000000000000000000000000000000000000103000309152b40556a8095aab5a08a75604b35200b00000000000000000f24384c5e6c8197a0adab9f978e898787898d969faaaea097826d5f4d3726140100000000000000000000000b171e212526221f180c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031729395c72879cb1af9a85705e4b4336363229313129333738454c61778b9fb4ab95806b56402b16000e24394e63798ea3b8a7917c67523c263653687e93a8ab917c67523c30455a70859aafb09b86705b46311b00000000142a3f54697f94a9b7a68b76604b36210b0000000001172c41566c8196abc1d6d3bea9947e69543f291400000000000e23384e63788dabbca7917c67523c271200000000000000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000000000000070d0f11110c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000172c41566c8196abb29c87725e4c40393632283131273135383e4a5a6d8297adb19c87725c37261401000000000000000000000000000000000000000000000000000000000000000000152b40556a8095aabcab8a75604b35200b00000000000000071b2d3e51667c909fb1b59f8d81797472717378818c9fabb19f927d675544311d08000000000000000000000000030a0c10100c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090b0c090300000000000000000a1e33465774899fb4aa95806a55403026211e161c1c171f212834475971879cb1ad98836d58432e18000e24394e63798ea3b8a7917c67523c27384d63788da5ac97826d573c2c455a70859aafb09b86705b46311b00000002172c42576c8197acb39d88735745321e09000000000014293e54697e93a9bed3d1bca6917c67513c271200000000000b20364b60758a9fb4a9947f6a543f2a150000000000000000000000000000000000000000000000000000000b171e21262725201d140900000000000000000000000000000002101b22242726221f180c00000000000000000000000000000000000000000000000000000000000000000000000000000000192e43596e8398aeae99846e59403024201d151c1c151d20232e3c54697f94a9b49e89745544311d08000000000000000000000000000000000000000000000000000000000000000005152b40556a8095aab59f8a75604b35200b000000000000000d22364a5c71859bb0b2a0927d6c635b5c5c5b636c7d8d9fb5b29c8774604b35200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090a161e21211e160b070000000000000c21364c61768ba9baa8937e69533e29140c0a030000040a0c182a3b5a70859aafaf9a856f5a45301a000e24394e63798ea3b8a7917c67523c2735495b72879db29d87725a4935455a70859aafb09b86705b46311b000000011426365a6f8499afb09b85705b39281603000000000011273c51667c91a6bbd1d6c6a48e79644f39240f0000000000091d31455672889db2ac97826d57422d1800000000000000000000000000000000000000000000000000010f1b2933363b3c3a3531261909000000000000000000000000000a18202d36393c3b37342a1c110300000000000000000000000000000000000000000000000000000000000000000000000000001b30455b70859ab0ad98836e58432e190b0902000001080b14293e54697e93a9b9a88a74604b35200b0000000000000000000000000000000002090b1314141414141414141414151619202c3c566b8096abb39e88735443301c08000000000000000f24394f64798ea3b5ad98826e5f4e4a3d3d494e5f6c8196a9b6a5907b665036251300000000000000000000000000000000000000000000000000000000000000030a0c0f121416171718191a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a19100e0800000000000000000000000000000000000000000000000000000000000004121c24283236363228221b1002000000000d22374c62778ca1c7a8937e69533e291400000000000000001b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c272c3c586d8297ada58d78634d38455a70859aafb09b86705b46311b000000081c30435472879cb2ad98826d58432d180000000000000f24394e64798ea3c5d6cdb9a88c77614c37210c0000000000021527385a70859aafaf9a856f5a372715010000000000000000000000000000000000000000000000000f1f2c39464c50514f4b44372618080000000000000000000000071828363e4a4f51504c473a2e211100000000000000000000000000000000000000000000000000000000000000000000000000001c31465b71869bb0ad98836e58432e19030000000000000014293e54697e93a9c6a08a75604b35200b0000000000000000000000000000000a151d20282929292929292929292a2a2c2b343c495a6f8499aeb19c86715c3626140100000000000005192b3c566b8196abb5a38e79634e41362d2c35404c62778b9fb4ad97826d5443301c0700000000000000000000000000000000000000000000000000060c0e1317171e2124272a2b2c2d2e2e2f303030303030303030303030303030303030303030303030303030302f25221b10020000000000000000000000000000000000000000000000000000000012222f3838454b4b4639372e2010000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c27273d52677d92a7a8937e685336455a70859aafb09b86705b46311b0000000b20354b60758a9fb4aa95806a55402b150000000000000c21364c61768ba7b9ccc9b49e89745847331f0a000000000000182d42586d8297adb29d87725544311d080000000000000000000000000000000000000000000000061a2c3d495761656664605544362513000000000000000000000011243646535c64666661594b3f2e1c08000000000000000000000000000000000000000000000000000000000000000000000000001c31465b71869badac98836e58432e19030000000000000614293e54697e93a9bbaa8a75604b35200b00000000000000000000000000000a1a2731363d3e3e3e3e3e3e3e3e3e3f40413c484d5a63788b9fb4ac97826d57422d18000000000000000b2035485a72879cb1b09b85705b4935211a1a213448596f8499aeb39e8874604a35200b00000000000000000000000000000000000000000000070d0f192123282d293336393c3f40414243444545454545454545454545454545454545454545454545454545454545443a372e211000000000000000000000000000000000000000000000000000000009192f404c51566061574f4b3e2e1b070000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c2722374c62778ca4ae98836e5443455a70859aafb09b86705b46311b0000000d22384d62778da9baa7927d68523d28130000000000000a1f33465874899eb3c9c6b19c87715c3a2a1704000000000000152a3f556a7f94aab49f8a75604b35200b00000000000000000000000000000000000000000000000c2135495b63767b7c7a73605443301c0700000000000000000002172c4053646e797c7b77655d4b37230e000000000000000000000000000000000000000000000000000000000000000000000000001a2f44596f83959797917f69543f291400000002080b101a212c3b54697f94a9b49f8a755544311d080000000000000000000000000002152738454b53545454545454545454545556595a626a78869caab5a4907b66503b2611000000000000000d22384d62788da4b6a9947f6a543d2c1a0706182b3b52687d92a7b8a68e79644f39240f000000000000000000000000000000000000000108101b22242c35383d4239464c4e515455565758595a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a594f4b3f2e1b0800000000000000000000000000000000000000000000000000011527374c5e6672767672645c4b37220d0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c271f34485971869cb19e8874604a455a70859aafb09b86705b46311b00000010253a50657a8fa5c7a48f7a654f3a25100000000000000417293a5c71869cb1c6c4ae99846f59442f1a0000000000000012273d52677c92a7bbaa8d78624d38230d00000000000000000000000000000000000000000000000e23394e63798a90918f8572604a35200b00000000000000000004192e44596e838e91908b7b65503a2510000000000000000000000000000000000000000000000000000000000000000000000000000d22374d62778082827c69614f3b2712090b10151d20252c353c49596d8297adb39e88735e4926140100000000000000000000000000091d3145566068696969696969696969696a6b6e72787f899ca4b5ab9c8674604b35200b0000000000000114263653687d92a8b7a68e79644e39240f00000d22374d62778ca3b5a9947f6a5439281603000000000000000000000000000000000009151d202d36393c494d52575b57616467696b6c6c6d6e6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6f6e655d4b37220e00000000000000000000000000000000000000000000000000081d314455667c878b8b877a644f3a240f0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c27182a3b566c8196aba78e79644e455a70859aafb09b86705b46311b00000013283d52687d92a7baa98c77624d37220d00000000000000192f44596e8499aec3c1ac96816c57412c17020000000000000f253a4f647a8fa4c6a5907b65503b2610000000000000000000000000000000000000000000000013283e53687d93a8a6a38c77624d37220d0000000000000000000a1f354a5f748a9fa6aa95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000b20344859626a6d6c675f4f43321f151d20252731363a3d494e5b63778a9eb4b09b85705b46301b00000000000000000000000000000b20364b60747d7e7e7e7e7e7e7e7e7e7f7f8183878d959ea7b5aa9f8d7a645544311d08000000000000081c3043546e8398aeb39d8874604a35200b00000b2034485971869bb1af9a856f5745321e090000000000000000000000000000000412192731353e4a4f565b63686c707376797c7f80818283838485858585858585858585858585858585858585858585858585858585847b654f3a2510000000000000000000000000000000000003060001080b08010b20354b6074879da5a5927d67523d28120000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c2712263c51667b91aaa9947f6954385a70859aafb09b86705b46311b000000162b40556b8095aab49f8a74604a35200b00000000000001172c41566c8196abc1bea9947f69543f2a14000000000000000d22374c62778ca8b9a8937d68533e2813000000000000000000000000000000000000000000000013293e53687e93a8c1a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000005182b3b484d555857514d413221242731363a37444b4f555b636c79869ca8b9ab96816b56412c160100000000000000000000000000152a3f556a7f92939393939393939393949596999ca4aab3b4a79e8c7e685c4b372715010000000000000b20354b6074889eb3ad97826d5443301c07000005182b3b566b8095abb49f8a76604b36210b00000000000000000000000000000c181f3037444b525c646b72787d8286888b8e919495969798999a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9985715b46311c00000000000000000000000001080b1014181b1e141d201d141c2e3f52677d92a6b29d8874604b36200b0000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c271221364c61768b9faf9a846f56455a70859aafb09b86705b46311b000003182e43586d8398adb19c87725443301c070000000000000014293f54697e94a9bebca6917c67513c2712000000000000000b1f34475974899eb4ab95806b56402b16010000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000d1d2b34374042423c39302d363938454b4f555560656b7179818b9ca4b5b3a18f7a644f3a240f0000000000000000000000000004192e44596e8399a9a9a9a9a9a9a9a9a9a9aaabaeb2b2aea99f96897c68604e3e2e1909000000000000000f24394f64798ea7b8aa917c67523625130000000010253a50657a8fa8b9a9907b66503b2611000000000000000000000000010f1d2a34414d556068717981878d92979b9ea7a3a6a9aaabacadaeafafafafafafafafafafafafafafafafafafafafafafafafafafafafaf9f89745f4a341f000000000000000000000608141c20252a2d3033263135312623374b5d71869bb0a8947f6a5645311d090000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c27121e33465770859bb09f8975604b5a70859aafb09b86705b46311b0000031628395b70859bb0af99846f5a362513000000000000000011273c51667c91a6bbc6a48e79644f39240f0000000000000005182a3b5c71869cb1ae98836e59432e19000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000d1820222b2d2d2b35383d4a4e545660656a6f757a80868e979fa9b5b4a399836e5c4b37220d0000000000000000000000000004192e44596e8399a8a8a8a8a8a8a8a8a8a8a6a5a4a59d99928a8176665e4e423120100000000000000003162839556a7f94aab49f8b76614c37210c000000000b20354b6075899eb3ab96816c563b2b180500000000000000000000010f1f2d3b474c5f67747d868e969ca4a7acb0b3b8b5b2b0aeacabaaaaa9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a99e89745e49341f0000000000000000040f1a212630353a3f42464849444b4437333d50657b8fa3b49e8976614c382715020000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c2712172939556b8095aaa88f7a65505a70859aafb09b86705b46311b0000091e32465773889eb3ac96816c57412c1700000000000000000f24394e64798ea3c5b9a88c77614c37220c0000000000000000192f44596e8499aeb09b86715b3a2917040000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000000050b101d2b343c494d555c646a6f757a7f84898f959ba3acb4b3aa9f968576614c3e2e1b070000000000000000000000000000152a3f546a7f929393939393939393939291908f8b88837d766c61584d403124130200000000000000091e32455770859aafb09b85705847331f0a00000000081d3144556e8399aeb19c8671594834200b000000000000000000000f1f2d3d4a59616e7c87929ba3abb2b6b4b0aba7ab9f9d9a9997959594949494949494949494949494949494949494949494949494949494949493836e59442f19000000000000000c171f2c3536434b4f54585b5d5e5560555144495b6f8499aeaa96816c5846331a0a000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c271210253b50657a90a9aa95806b555a70859aafb09b86705b46311b00000c21364b61768ba6b8a9947e69543f291400000000000000000c21374c61768ca7b9b49e89745847331f0a0000000000000001172c41566c8196abb39e89735846331f0a0000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000010212e3b484d5a626b72797f84898f949a9fa8aab1b3ada79e968b80746158463320100000000000000000000000000000000b20354b60737c7e7e7e7e7e7e7e7e7e7d7c7b7976726e6761574c473a3022130600000000000000000b21364b60768a9fb4aa957f6a553a291704000000000115273753687d93a8b6a48c77624d37220d0000000000000000000d1d2d3d4a5b637783919da5b1b5b4afab9f9b96928e8b8885838280807f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7f7e77614c37220c0000000000000e1c2a333d494e546065696d70737474756b62514e63798c9fb49f8b78624d3a291700000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c27120b20364b60758a9fb09b8570585a70859aafb09b86705b46311b00000e24394e63798ea3c4a6917c66513c271100000000000000000a1f33475874899eb3b19c86715c3a2a1804000000000000000014293e53697e93a8b8a78b76614c36210c0000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000e1e2e3f4b59626d7880878e949a9fa8aaafb4afa9a79e98918981786b6056463a291702000000000000000000000000000000081d314455606768686868686868686868676664615859524b4639332a1c120400000000000000000011263b51667b90a9b8a68e79644f39240f0000000000000d22384d62778da4b5a7927d6852362513000000000000000008182b3b4a5b63798799a1b2b6b2aea29a928b85817c787572706e6c6b6a6a696969696969696969696969696969696969696969696969696969696968615947341f0a00000000000e1e2c3a474c5b636c747a7f828588898a8b806b56596c8197abad98836d5a4835271a0a000000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e24394e63798ea3b8a7917c67523c2712091d3245566f849aaf9f8b76615a70859aafb09b86705b46311b000011263c51667b91a6c5a38e79634e39240e00000000000000000417293a5b71869ba6a599836e59442e1900000000000000000011263b51667b90a6c5a48e79644f39240f0000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000005192b3c4b5d6577828c959da5a9afb4afaaa99f9a948f88827c756b625a4b4538291b0b0000000000000000000000000000000001152737444b525353535353535353535351504f4c463a3d3633291f170c0000000000000000000002152737566c8196abb39e8874604a35200b0000000000000b2034485a71869cb1ad98836d5443301c070000000000000013253648596379899da5b3b6b2a0988e857d77706c676360565b59575655555454545454545454545454545454545454545454545454545454545454534c473a2a1804000000000c1d2c3c4958616c7982888f94979b9d9e9f9e89735e61778a9fb4a48f7a685f4b45382718080000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000e23384e63788da3c5a7917c67523c27150c152838546a7f94a9aa917b665a70859aafaf9a85705a45301b000014293f54697e94a9b8a68b76614b36210c00000000000000000011263c51667c888c8c877a644f39240f0000000000000000000e23394e63788eabbca6917c67513c27120000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000b2035485a657b89989fabb2b3aba99f9a958f8a847f79746d6660564d493c32281a0b00000000000000000000000000000000000009192731353d3e3e3e3e3e3e3e3e3e3d3c3b3a36332928211e170b040000000000000000000000081d31445571879cafad98826d5443301c0700000000000005192b3c566b8196abaf9e8874604a35200b000000000000071c3043546277889da7b7b4a59d9083797068615956524e4b4538444240403f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3f3e37342a1c0c0000000004182a3b495a6276818c979ea6a9adb0b2b2b19f8a75566a7f95a9bab29d887d6e6056453625130000000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000d22374c62778ca7b9a8937e6953403228221f24394f64798ea7ac96816c5971879cb1ad98836d58432e180002172c41576c8196acb39e88735746321e0a0000000000000000000f24384c5e6673777672645c4a36220d0000000000000000000b21364b60768b9fb5a9947f69543f2a140000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000021628384d6278899ea7b4b5a69d96908a85807a756f6a646054514b4538352b211f170c0000000000000000000000000000000000000009151d202729292929292929292928272624211f17120c0a03000000000000000000000000000b20364b60758c989a98907b655036251300000000000000000f24394e647a8d989a988c77624c37220d0000000000011527374a6072849aa6b7b4a29a877b6e635b524c473a3d393632282e2d2b2b2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a29221f180c00000000000b1f344759627886979faab3b3aba5a99f9d9c9b87726075889eb3c7b7a69d928274605443301c0a00000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000b1f34475974899eb3ae99836e5e4b453837342a354b6074899eb19c867162778b9fb4ab96806b56412b160000132536596f8499aeb09b86705b39291603000000000000000000091d2f404c54606161584f4a3e2d1b07000000000000000000091e32455673889db2ac97826c57422d170000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000091e3245566d8298a7b8ab9f9588817b75706a656056544f4b433636313538393633291c150700000000000000000000000000000000000001080b121313131313131313131312110f0c0a040000000000000000000000000000000000081d314455677d8384827c665d4c38180800000000000000000d22364a5c657b8284837d67594834200b0000000000081d314455687d92a2b4b4a29a8476655d4e4a3d37342a2723201d1e212324252525252525252220181414141414171f21242425252525252525252524221f180c050000000000071b2e3e4c6177889ca4b4b4a69d96908c898787857d67687d93a6b8b3aeb3b2a0988372604a39281603000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0005182a3b596e8399aeb59f8d7c6a6056514c473a4643546e8399aea48c776d8298aab8a6907b65503b251000071c30435472879cb1ad98836d58432e18000000000000000000000012222f36434a4c4c473a362d201000000000000000000000021628385b70859ab0af9a846f5a3726140100000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60758a9fb4b59f8d7f746c65605655504b45383a35302e36434a4d4e4c463a32251503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021527374d5f676e6f6d665e4c3f2f1c000000000000000000071b2d3e4b5d656d6f6e675f4d3b2b180500000000000b20354b6074879db2b7a69a847361584b3f362d221f181c232529333638393a3a3a3a3a3a3a37342b1d141c20272a3337393a3a3a3a3a3a3a3a3a3a3937342a20180d000000000d22374b5c6e8398a6b6a99f9488807b7774727170676073869cb1a79e99a1b1b2a1937e695745321e09000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b000011263b51667b90a2b4ab9f8b7f756c6661595c5b5a5a687e93a8a9937e8298a0b2b39d8873604b35200b000b20354a6074899fb4aa95806b55402b1600000000000000000000000412182530353737332a221b10020000000000000000000000182d43586d8298adb29c87725544311d0800000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000010253a4f657a8fa9baab96816c6056504b45383a36312724202e3e4b5460626361584f4332200c000000000000030a0c10110f0b080100000000000000000000000000000001080b0f11110c0a0400000000000000000000000000000000091930414d51585a58504c402f21110000000000000000000010202f3f4b50585a59524d41301d0d00000000000011273c51667c91a5b6b29d87766155473a2f211a0f18202e373b39464b4d4f4f4f4f4f4f4f4f4d483b2c2630353c3a474c4e4f4f4f4f4f4f4f4f4f4f4f4c473b342b1d0d0000000f243a4f647a8fa0b2b49f8b7f746b6662595d5c5b52667b90a4b39e8984979fb1b39e8875604b36210b000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b00000f24384c5e6f849aa6b6a99f9588817b77747271706f70798da3ae9d9398a0b2b2a1927d685443301c08000d22374d62778ca8a8a6927d68523d28130000000000000000000000000008131c2022211f170c0700000000000000000000000000152a40556a7f95a7a89f8a75604b35200b00000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8b9a88d78624d453836322825201d150f22374b5c64737778766a614f3c271300000000000b171e21262725201d14090000000000000000000000000008141c20242726211f170c00000000000000000000000000000000122330393c4345433b382f221203000000000000000000000211212f373b4345433d3a30231300000000000005182b3b586d8298adb7a6927d685847372a1c110d1d2b343f4b505857616364656565656565656259493d36434b5159586163646565656565656565656461594d483b2b18050001172c41566c8196abb4a2917d696055504c473b474a5c6f849aafaa96806e8197a8b8a7917c67523c2712000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000091c2f404d6278889ca5b4b4a79e96918c898786858585869cb1bbaea9adb2b3a098836e604e36261401000c21374c61768a9192908777614c37220c000000000000000000000000000000070b0c0c0a040000000000000000000000000000000e23384d6378899192918874604b36200b00000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000152b40556a8095aab49e89745a493527211e16100b09020f253a4f647a878d8e8b7f6a543f2a15000000010f1b2933363b3c3a3531261909000000000000000000000008182630353a3c3b3733291c1002000000000000000000000000000004121d24272e2f2e26231c120400000000000000000000000003111c23252d2f2e28251e13050000000000000b2034485973889eb3b29d8774604b3a2a190c0b1b2b3b484d5d656d727678797a7a7a7a7a7a7a77635b49485460676e737679797a7a7a7a7a7a7a7a7a79777062594834200b00031729395c72879cb1b09a85705f4b443737342b3b4e64798ea2b49f8b7762768a9eb4ac97826c57422d17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0000001220344859637987969fa9b2b3aba6a89e9c9b9a9a9a9ca4b6c2c3b6b2a79e948274604b4231180800000a1f33475862777c7d7b75615947341f0a0000000000000000000000000000000000000000000000000000000000000000000000000c2035495a63767c7d7c76615544311d0800000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000001172c41566c8196abb29d87725d3c2c190b090300000002182d42576d8297a6aa9b86715c46311c0700000f1f2c39464c50514f4b443726180800000000000000000001142636434b4f51504c473a2d2010000000000000000000000000000000000a1012191a18110f0900000000000000000000000000000000080e10181a1912100a01000000000000000d22374c62778ca6b8ac97826c5544311c0c0417293a4859626f7b82878b8d8e8f8f8f8f8f8f8f8a79634e5962737c83888c8e8f8f8f8f8f8f8f8f8f8f8e8c8577624d37220d000a1e33465774899fb4aa95806a5541312722203448596d8298adad98826d5970859aafaf9a85705a45301b000c22374c61778caabba8937e69533e291405000000000000051b30455a70859aafb09b86705b46311b00000005192b3b495b6376818a969da6a9adb0b3b1b0afafb0b1b3b0ada9a59d95897f7260564532231300000004172a3a4759626768666157473a2a180400000000000000000000000000000000000000000000000000000000000000000000000006192c3c4957616668666158473727150200000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3722111111111111111111111120354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000002172d42576c8297acb19c87715c47321c00000000000003182e43586d8398adb19b86715c46311c0700061a2c3d495761656664605544362513000000000000000000081c3043546064666661584a3e2d1b0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253b50657b90a5c5a7917c6752372715000a1f33465862778490979d9faba4a4a4a4a4a4a4a9937e695662778591999ea6a3a4a4a4a4a4a4a4a4a4a4a4a397816c57422d17000c21364c61768ba8baa8937e69533e29151628394d62788b9fb4a28e7964596e8398aeb19c86715c47311c000b20354b60748a9fb4a9947f69543b2a1f18161514141414141b30455a70859aafb09b86705b46311b000000000d1d2c3d4957616c7881888e94979b9e9fa9a1a1a99f9e9b97948e8780766960544538281605000000000c1c2a3b474c5153514b46392a1c0c00000000000000000000000000000000000000000000000000000000000000000000000000000e1e2c39464c5153514c473a2919090000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3726262626262626262626262626354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000002182d42576d8297acb19c87715c37271506000000000004182e43586d8398adb19b86715c46311c07000c2135495b63767b7c7a73605443301c0700000000000000031628394b60737a7c7b76645c4a36220d0000000000000000000000000000000002050002080b080200050200000000000000000000000000000000000000000000000000000000000012273c51677c91a6b9a48f7a644f3a250f0417293a4c6176869aa2adb2b2acaaa9a9a9a9a9a9a9947f696074869ba3aeb3b2acaaa9a9a9a9a9a9a9afb4c0b19c87725c47321d000d22374c62778ca1c6a8937e69533e29141e3246576b8096aaaf9a846f5c596e8398aeb19c87725c47321d00081c30435473889db3ac97826d59473a342a2b2a29292929292930455a70859aafb09b86705b46311b00000000000e1f2c39464c5a626c73797f8285888a8b8c8c8b8a8885827f79726b61584b4336281a0a0000000000000d1d2a34373c3d3b3632281b0c000000000000000000000000000000000000000000000000000000000000000000000000000000000e1b2933363c3d3c3733291c0c000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3b3b3b3b3b3b3b3b3b3b3b3b3b3b3b4a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000001172c41566c8196abb19c877255443120191514131415171f2e3e596e8399aeaf9a856f5a45301a05000e23394e63798a90918f8572604a35200b00000000000000091e3245576f848f91908a7a644f39240f000000000000000000000000050b0d13171b1d151d201d151d1b17130d0b05000000000000000000000000000000000000000000000000000013283d52687d92a7b8a28d78634d38230e0a1f3346586c8196a4b3b0a49c9795949494949494948f7a656a7f95a4b4b1a69d9795949494949494949aa2b4b49f89745f4a341f000d22374c62778ca1b7a8937e69533e291421364b6176899eab9f907b6650596e8398aeb19c87725c47321d0001142636596e8499aeb39e897761584c473b41403f3e3e3e3e3e3e455a70859aafb09b86705b46311b0000000000000e1b29333c484d565c64696d707374757676757473706d69645c554c473a3026180a00000000000000000d181f22272826211e160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000b171e21262827211f170c00000000000000000000000000000000000000000000000013293e53687e93a8b7a28c776251515151515151515151515151515151515f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000152a3f546a7f94a9b49f8975604b3e352b2a2928292a29333c4b5c71869cb1ad98836d58432e18030013283e53687d93a8a6a38c77624d37220d000000000000000b21364b60768ba2a6a9947f69543f2a1400000000000000000001080e192022282c3033273136312733302c282220190e0801000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0c21364c6176899eb4b09e9687817f7f7f7f7f7f7f7e7b666074889db3b19f978882807f7f7f7f7f7f7f849aafb59f8a75604a3520000d22374c62778ca1b7a8937e69533e291420364b6074838b8d8b816d5e4c596e8398aeb19c87725c47321d000012283d52677d92a5b7a89b8476696259595655545454545454544e5a70859aafb09b86705b46311b000000000000000b171e2b35383e4a4f54585b5e5560616160555e5b58544e4a3e37332a1c140800000000000000000000050b0d1213110c09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c1113110c0a040000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c7766666666666666666666666666666666666666758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000011273c51667c91a9baa8927d685c4d493c403e3e3e3f3a474c5a647a8fa4b5aa947f6a553f2a15000013293e53687e93a8c1a28c77624d37220d000000000000000c21364b61768ba0c0a9947f6a543f2a15000000000000000009141d202b35383d41454849444b44494845413d38352b201d14090000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d11263b51667b90a8b9a89680736c6a69696969696969665e657a8fa6b8a89781736d6a6969696969696b8095aabcab8a75604a3520000d22374c62778ca1b7a8937e69533e29141d314556606f7678776d635240596e8398aeb19c87725c47321d00000c21364b6175879db2b4a29b887f77716e6b6a69696969696969635b70859aafb09b86705b46311b0000000000000000030e1920222d36393f424637444b4c4c4b443746423f39362d211f170c01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8bda7927d7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7b7c8c9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768a9fb4b39e8a7a6c625a5855545354555758616978879cb2b5a38e79634e39240e000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000310192631353c484d53575a5d5e5560555e5d5a57534d483c353126191103000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d152b40556a8095aab49e89756054555454545454545450556a7f95aab49e89766154555454545454556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e2914152738454b5861636158524543596e8398aeb19c87725c47321d0000091e324657667c909db4b4a69d948c8683807f7e7e7e7e7e7e7e796370859aafb09b86705b46311b00000000000000000000050b101b22242a2d302731363737363127312d2a24211a0f0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c10110f0b0801000000000000000000000000000000000000070d0f11110c0a04000000000013293e53687e93a8bdad9b9290909090909090909090909090909090909090909fabbcab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000a1e3246576d8298a8b9a89e8c8178716d6a6968696a6d70767f899ca5b6ab9b86715b4a36210c000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000513212e37444b535a62686c7072737575757372706c68625a534b44372e2113050000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d182d42586d8297adaf9a846f5645363f3f3f3f3f3f3f44596e8399aeae99846f5746363f3f3f3f40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e29140a1a27313a464c4d4c473a3543596e8398aeb19c87725c47321d0000031628394c5e697f929ea8b4b3a9a49c98969594939393939393897470859aafb09b86705b46311b00000000000000000000000000070d0f14181b151d202121201d151b18140f0d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b171e21262725201d140900000000000000000000000000000002101b22242726221f180c0000000013293e53687e93a8bdbaada7a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6a6b4bcc9ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000031629394d6277899ea9b9aa9f968d86827f7e7d7e7f82868b949ea7b6b49f8d7a644f3d2d1a07000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000041323303f4b55606870787d818588898a8b8a898885817d78706860554b3f3123130500000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d192e44596e8399aead97826d5838282a2a2a2a2a2a28385c71879cb1ab95806b5639292a2a2a2b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e2914000a151d2933363837332a2e43596e8398aeb19c87725c47321d0000000b1b2f404f61697d8a979faaaeb2b1aeabaaa9a9a9a9a9a9a78d7870859aafb09b86705b46311b0000000000000000000000000000000000030002080b0c0c0b0802000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1b2933363b3c3a3531261909000000000000000000000000000a18202d36393c3b37342a1c1103000013293e53687e93a8bdbdb1acababababababababababababababababababababb5bcc9ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000b20344859667c8b9ea7b4b4aba49c989593939394979b9faab3b3aa9f947f6a5c4b371f0f00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000122230414d5d65737d858b92969a9d9e9faa9f9e9d9a96928b857d73655d4e4131231300000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d1a2f445a6f8499afac97826c57422d17151414141e32455674899eb3a8937e68533e291414162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e29140000020b171f2123221f182e43596e8398aeb19c87725c47321d00000000122232434f606877828b92999da6a4a5a7a8a8a8a8a8a8a68d7870859aafb09b86705b46311b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2c39464c50514f4b44372618080000000000000000000000071828363e4a4f51504c473a2e2111000013293e53687e93a8bdb19f9795959595959595959595959595959595959595959fabbcab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000005182b3b4c5e667c89979fabb0b4b1adaaa9a8a9aaacb0b4b0aaa1998c7f6a61503e2e1b0100000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000c1c30404d5f677b86929b9fabacafb2b2b1b1b1b2b2afacab9f9b92867b685f4e41301d0d000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d192f44596e8499aead98826d583b2d2c2a28262422364b60768ba8b9a6917c66513c271100162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000040a0c0e0c0a192e43596e8398aeb19c87725c47321d0000000004152532414e59626d767d84888c8f909192939393939393887470859aafb09b86705b46311b00000000000000070b0b0700000000000000000000080e10181a18100e080000000000000000000001080b0f13161818150e0c0700000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d495761656664605544362513000000000000000000000011243646535c64666661594b3f2e1c080013293e53687e93a8bdac978180808080808080808080808080808080808080808d9fb5ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d30404c5e6677828c949a9ea8a5a7a8a8a7a6a5a89e9b948d8479696150433320100000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000004172a3a4d5f677d8c9ca4b0b4aea7a99f9d9c9b9c9d9faaa8afb5b0a49c8c7d685f4d3b2a18050000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d182d43586d8298adb09a8570594a3e42403d3b3937374d62778ca2c6a58f7a65503a251000162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000071523313b484c5861686f73767a7b7c7d7e7e7e7e7e7d796370859aafb09b86705b46311b000000010b08131c20201c130809000000000003111c23252e2f2e25231c11030000000000050b0d141c2024282c2d2d2a24211a0f0600000000000000000000000000000000000000000000000000000000000000000000000000000c2135495b63767b7c7a73605443301c0700000000000000000002172c4053646e797c7b77655d4b37230e0013293e53687e93a8b7a28c786b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b6b758b9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000122230404c59616d777e85898d909192939291908d89857f786f635b4f43332515020000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000a1f334758677d8d9faab5aa9f99928d8a88878687888a8d92999fabb5aa9f8d7d675948341f090000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d162b40556b8095aab49f8b77645c5a575553504e4c474e63788da3b8a38e79644e39240f00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000005131d2b343a474c5359586164666768686868686868635b70859aafb09b86705b46311b000005131e25253035353025231c110400000011212e373b4345433b372e21110001080b10192022263035393d4143423f39362d20190e000000000000000000000000000000000000000000000000000000000000000000000000000e23394e63798a90918f8572604a35200b00000000000000000004192e44596e838e91908b7b65503a25100013293e53687e93a8b7a28c776256565656565656565656565656565656565f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000000000412222f3b474c5962697074787b7c7d7e7d7c7b7874706a635a4e493d32241507000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000c21374c6176889eabb5a39b8c837d7875727171717275787d848d9ca4b6ab9e8977624c3726140100000000000000000000000000000013293e53687e93a8b7a28c77624d37220d12273c51677c91a8baaa9b857a736f6c6a68666361585d64798ea3b8a28d78634d38230e00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000d18202a33373d3a474c4f5052535353535353534e5a70859aafb09b86705b46311b00011323313a36434a4a4336382f22110000081c2e3f4b50585a58504b3f2e190f141d20252b343836434b4e53565857554e4a3d352c1e1002000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8a6a38c77624d37220d0000000000000000000a1f354a5f748a9fa6aa95806b56402b160013293e53687e93a8b7a28c77624d4040404040404040404040404040404a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000000000004111d2a343b484c5454606366676869686765626054554d493c352c1f140600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500061a2c3d566b8095a6b7a59b85796e676260545c5c5c556063686f7a869ca5b7a797816c5544311d0800000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0c21364c61768a9fb4b5a39b8e8884817f7d7b79777472707a8fa4b7a28c77624d37220d00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000050c171f21282a33373a3b3c3d3e3e3e3e3e3e455a70859aafb09b86705b46311b000b1e31414e5254606054504c402f1c09000e23374b5d656d6f6d655d4b3726242631353a3c484d53546064686b6d6d6a635b4d493c2d2010000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8c1a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d372b2b2b2b2b2b2b2b2b2b2b2b2b354a5f758a9fb4ab95806b56402b1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c181f2b343736434a4d505253535251504d4a433638352c211a0f010000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000c2135495b72879db2b29d8776635b524d4b43364637444b4d535c6476879db2b39e8874604b35200b00000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0a1f3346586b8096a2b3b5b0a69d99979592908e8c8a8785849ab0b6a18c77614c37220c00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d0000000000000000000000040a0c13171f2125262728292929292930455a70859aafb09b86705b46311b0010253a4e5f6872757571665e4c38230f0010253b50657b8384837b655544363a37444b4f565a62686e74797d8182827f796f625a4a3e2d1d0d0000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d3722161616161616161616161620354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040d182022253035383b3c3d3e3d3c3b383530252320190e0600000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000e23394e63798ea5b6a8937e6958493d3835302631263135383e4a58687d92a8b8a68f7a644f3a240f00000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0417293a4b607484949ea7abafb2afacaaa8a5a3a99f9d9b9aa2b4b6a18b76614c36210c00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000000040a0c0f111213131313131b30455a70859aafb09b86705b46311b0013283d52687d878a8a867c66503b2611001c31465b7185989a988a74604b4b4f535560656b71777d83898e92969897948e8478645c4a3b2a180500000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0101010101010101010a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0d131c20232627282928272623201c130e0c06000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150011263b50667b90a5c3a38e79644e3a2c23201c141c141d20232d3a4d62788da2c4a6917c67513c271200000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000b1e32455660747f8990969a9ea6a2a5a7a9abadafb1b0b0b4c0b5a08b76604b36210b00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b001f34495f74899c9f9f9b85715c46311c001b30455a70859aafa88e79635b6164696e747a80878d92989ea7a8abadacaaa29a8a7a645947341f0b00000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070b0e111213141312100d0b0700000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150012283d52677d92a7b7a28c77624d37220f0b08010001080b1021364b61768ba0b6a9937e69543e291400000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00021628384555606a757b8185888b8d8f919496989a9c9ea7adbabbaa8a75604a35200b00162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0020354a60758aa8b4b29c87725d47321d00172c42576c8197acb09a84797576797e83898f969ca4a8aeb3aeaaa6a3a5adb2a89d8877624c37220d00000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000a1a2837444b5660666b707376787a7c7e8082858789939cadb49f8a745443301c0700162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0020354a60758a9fc6b29c87725d47321d0010263b50657b90a2b4a29a8e8a8b8f93999ea7abb1b1aba89e9994908e8f98a0b2a696816c573c2b1905000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000610161920202020202020202020202020202020202020202020202020202015130d040000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000a19273138454b51565a5760636567696b6d6f71747e93a8b49e89745f4925130000162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0020354a60758a9fb5b29c87725d47321d000e23384c5d6f849aa4b2b0aa9faaa4a8aeb3aea8a49c968f89847f7b797a8298a4b39e88735a4834200b000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000000a18232b2e3535353535353535353535353535353535353535353535353535352b2821150700000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000009151d2731363b4139454b4d50525456585a5c697e93a8b39e89735e49341e0000162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0020354a60758a9fb5b29c87725d47321d00091c2f3f4c61768698a0abb0b1b0ada9a79e99938d86807a756f6a66646573869cb1a78d77624d38220d000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160000001828363f434a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a403c33251504000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000020a151d20262c283236383a3c3f41434554697e93a9b39d88735e48331e0900162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051b30455a70859aafb09b86705b46311b0020354a60758aa9b9b29c87725d47321d0000111f3347586177838e969a9c9b98948f89837d78716b65605555514e546d82979e9d8e79644e39240f000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000c1c3646535860606060606060606060606060606060606060606060606060605f55504333210d000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000002090b1116161e21232527292b2d3f54697f94a9b29d87725d48321d0800162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000051a2f455a6f849aa8a89a85705b45301b001f344a5f748b9ea8a69c86715c47311c000004172a3a4759616e7a81858786837f7a756e68625a56504b44373b364e63798489888275604b36210b000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160004182a3a53646e7575757575757575757575757575757575757575757575757575756a62503c2813000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000003090b0e101214162a3f546a7f94a9b19c87725c47321d0700162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000000000000000000000000000012273d52677d8a8d8e8a7d67523d281200152a3f546a7f898c8c887c67523d27120000000c1c2a3b474c5c646c7072706e69656055534d483c3a36312726364a5b637073736e605745321e09000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000a1f3447596e828b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b806a55402b15000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000000000000000000000000152a40556a7f95aab19c86715c47311c0700162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000001025394d5f6775787875675f4d3a25100013273c4f616a75777774675f4d392510000000000c1d2a343e4a4f565b5c5b58544f4b443738352b25201d151a2d3d4a4e5a5e5e594b4539281603000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000c22374c61778c9fab9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9faa9e88735e49341e090000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000060c0e11111111111111111112152b40556b8095aab09b86715b46311c0600162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000a1e30414d5660636360574d41311e0a000c2032434f5560626260544d41301e0a00000000000c181f2d363941454746433f3a353127222019100b08020f1f2d3639454948433632281b0a00000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0c0c0c0c0c0c0c0c0c0c20354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000e23394e63788ea3bcc4b7b2b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b19f8a755f4a35200a0000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000e1920232626262626262626272827313e566b8096abaf9a856f5a45301a0500162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000113233038454b4e4e4b453931231301000315253237444b4d4c4b43363023130100000000000004101b22242c3032312e2a25201d150d0b0500000000010f1a21233034332e211e160a0000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3722212121212121212121212121354a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000e24394e63798ea3b8b7a69d9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9b87735d48331e080000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000e1e2c35383b3b3b3b3b3b3b3b3c3d38454b5c6f8499aead98836d58432e180300162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000005131a28323638393632281b13050000000715192731363737353026181305000000000000000000070d0f171b1d1b1914100b0801000000000000000000070c0e1b1e1e190b0903000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d3736363636363636363636363636364a5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000e23394e63788ea3b8b29d87868787878787878787878787878787878787878787867d68523d2813000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000d1d2c3c494d51515151515151515152555660687a8c9fb4ab947e69543f29140000162b40556b8095aab59f8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000000000a161e212323211e160a0000000000000009151d202222201c140800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c5f758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000e23384e63788da3c3a7927d71717171717171717171717171717171717171717171685f4e3a2510000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000005192b3b495a63666666666666666666676a6e757d899eaab59f8c78634e38230e0000162b40556b8095aabcab8a75604a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d00000000000000000000000000000000000000000000000000000000000003090b0e0e0b090300000000000000000002080b0d0d0b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003070002080b0802000603000000000000000000000000000000000013293e53687e93a8b7a28c7762616161616161616161616161616161616161758a9fb4ab95806b56402b160013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000c21374c61778ca5b7ab96816c595c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c524e41311e0b000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000013283e53687e93a8b7a28d77624d38220d00000b2034485963787b7b7b7b7b7b7b7b7c7d7f8389929ea7b6a699836e5b4935210c0001162b40566b8095abb49f8a755f4a3520000d22374c62778ca1b7a8937e69533e291400000000000000000004192e43596e8398aeb19c87725c47321d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002090b1115181c1e151d201d151e1c1815110b090300000000000000000000000013293e53687e93a8b8a38e7976767676767676767676767676767676767676768c9fb4ab95806b56402b160013293e53687e93a8c2a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000a1f33475872879db2b39e89776256453647474747474747474747474747474747463d3a31231301000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000012273d52677d92a7b8a38e79634e39240e00000d22374d62788b9090909090909090919294999ea7b3b4a59d8877624c3d2c1a060002172d42576c8297acb39e89745e49341f000d22374c62778ca1b7a8937e69533e291400000000000000000000192e43596e8398aeb19c87725c47321d000000000001080b0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0b09020000000000000000040a0c1a1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1c1a0c0a04000000000000000000000000000000000000000000080a151d20262a2e3133273136312733312e2a26211e160b070000000000000000000013293e53687e93a8bda8978e8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b9faabbab95806b56402b160013283e53687e93a9a7a48c77624d37220d0000000000000000000a1f354a5f748a9fa7ab95806b56402b160004172a3a556a7f94a4b5a79a8474605443362532323232323232323232323232323128251e130500000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000011263b50667c90a5c6a5907b66503b2611000011273c51667c91a9a6a6a6a6a6a6a6a6a7aaaeb3aeaa9f968779635948341f0f0000061a2c3d596e8399aeb29d88735d48331e000c21374c61778cabbca8937e69533e29160d0b0500060500040a0c162939596e8398aeb19b86715c46311c0000000009151d2021212121212121212121212121212121212121212121201d150a0000000000000c171f212f32323232323232323232323232323232323232323232323232323232322f211f170c00000000000000000000000000000000000007111c232832363b3f43464849444b44494846433f3b363228201c1308000000000000000013293e53687e93a8bdb5a8a3a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1b4bbc8ab95806b56402b16000e24394e63798b9192908672604a35200b000000000000000000051a2f445a6f839092918d7c65503b261000000c21364b6074869ca7b4a2988272605443301c1c1c1c1c1c1c1c1c1c1c1c1c1c1c13100b010000000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8b7a28c77624d37220d010000000000020c21364b61768ba0b6a9947f69543f2a140013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000000000e23394e63798ea8b9aa957f6a553f2e19090012273c51677c91aba8a8a8a8a8a8a8a7a6a4a79e99948b8176635b493b2b180100000a2135495b72879db2b09b85705b46301b000b20364b60748a9fb4aa95806a554232282220181c1b1b1b171f212832465770859aafaf99846f5a442f1a0000000e19273135363636363636363636363636363636363636363636363631271a10020000000c1c293336444747474747474747474747474747474747474747474747474747474747443633291c0c000000000000000000000000000000010f1a212f3838454b5055585c5d5e5560555e5d5b5855514b453835302518110100000000000013293e53687e93a8bdc1b5b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b4c0c0ab95806b56402b16000c21364a5b63777c7d7b74605443301c07000000000000000000000b20354b60737a7d7c78655e4c38230e0000091e3245566379899eaab2a0978172604a44342616070707070707070707070707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011273c51667c91a6c7a28d78634d38251d151514131415151d26374c61778ca1b6a7927d68523d28130013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000000000b20354b6073899eb4b19b86715d4b372715090e23384e63798d939393939393939392918f8d88847e776c6158493d2c1d0d00000a1a2b3b4e63788da5b7ac97816c57422c1700081d31445572879cb2b09b8570604b463937342b313030312a333739464b6176899eb3ac97826c57422d1700000e1f2c37444b4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4c4b45382e201000000417293a464c5a5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5c5a4c463a291704000000000000000000000000000614202d363f4b505660666a6d7173747575757473716d6a666056514a43362f1d1409000000000013293e53687e93a8bdb5a39b9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9aa2b4c8ab95806b56402b1600071a2d3d4a59626768666056453625130000000000000000000000081d31445560656867625a4c402f1c09000002162838495b657b8c9fabb19f96816c625144332515070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa9baa6907b6651433631272a2928292a2832364350657a8fa5bbaa907b65503b26100013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000081c3043546f849aafb5a38f7a6555443126190d2135495b657a7d7e7e7e7e7e7e7d7d7b7a78736e6962594c463a2c1f0f00010d1a273848596b8096abbbaa927d68523d28130002152737576c8297acb4a3927e6b6157514c483b464545463a474c5157616c8096a8b9a8917c67513c271200061a2c3d4955606161616161616161616161616161616161616161616160564a3e2e1b07000a1f334658616f71717171717171717171717171717171717171717171717171717171716f615846331f0a000000000000000000000000061424313e4a4e5d656e757b7f838688898a8b8a898886837f7b756e6760544c40312619090000000013293e53687e93a8bdb09b8585858585858585858585858585858585858585859aaabbab95806b56402b1600000f1f2d3b484c5152504b4538281808000000000000000000000001152737444b5052524d483c2f2111000000000a1a2c3d4c5d677d8d9fb5b09f96806b6251433325150700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364b61768a9fb4ae99836f60544b44373f3e3e3e3f38454b54606e8399aeb49f8b77614c37220c0013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000000000114263652687d92a7b8b19c8674604b44372b1e1a2c3d4b5d656868686868686868676665625a59544c473b33291b0f0409141d2a38455662778a9fb4b49f8b77614c37210c00000f243a4f647a8fa0b2b49f8c80756c6662595c5b5b5a5b5c5861666c7581969eb0b49e8975604b36210b000c2135495b63747676767676767676767676767676767676767676767675645c4a36220d000c21364c61768387878787878787878787878787878787878787878787878787878787878376614c36210c000000000000000000000001142431424e5c646f7b83899094989b9d9e9faa9f9e9d9b98949089837c72665e4b443726180800000013293e53687e93a8b7a28c7870707070707070707070707070707070707070758b9fb4ab95806b56402b160000010f1d2a34373c3d3b3632281a0a0000000000000000000000000009192731353b3d3c38352b1e110300000000000f1f2f3f4d5f687e939daeb09e95806b62504333251506000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1e3246576e8399aeb3a1957f7266605557545453545557566066738095a1b2af9a846f5947341f0a0013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000000c21364b6176899eb3b5a497816d6055483c3228212e3f4b4f535353535353535352514f4d493c3f37342a1f170b0e171f26313b48566074849aa9baae99836e5847331f0a00000d22364a5c6e8398a5b5aa9f9689817c777472717070707174767b8189969fb0b3a2947f695645321e09000e23384e6378898b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8b8a7a644f3a240f0013283e53687e939c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c9c937e68533e281300000000000000000000000f2031424e60687a8490989ea8aaadb1b2b2b1b1b1b2b2b0adaaa89f9991867b6c60554436251300000013293e53687e93a8b7a28c77625b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5f758a9fb4ab95806b56402b16000000000d181f22272826211e160a00000000000000000000000000000009151d202528272320190e0000000000000001112130414e60697f949eafb09e95806a615043322414060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000316293950657b90a0b2af9d95847b756f6c6a6968696a6c6f757c85959eafb2a0917c66513a2a18040013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000000a1e334657697f94a4b5b19f978173625a4b4639362c2e373a3e3e3e3e3e3e3e3e3d3c3a38352c29221f18141c2024293337444b5962748298a2b4b2a08f7a644f3a2a17040000071b2e3e4c6176879ca4b4b4a79e97918c89878685858687898c90969ea7b0b4a29a8472604b3828160200152a3f546a7f94a7a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a996816b56412c1600162b40566b8095abb1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1aa95806a55402b1500000000000000000000071a2d3e4e60687e8b9aa2adb4b2aaa5a89f9d9c9b9c9d9ea8a5aab1b4aea39b908173605443301c0c000013293e53687e93a8b7a28c77624d4545454545454545454545454545454a5f758a9fb4ab95806b56402b160000000000050b0d1213110b0902000000000000000000000000000000000001080b1013120d0b0600000000000000000003132331424f616a80959eb0af9e947f6a614f42322414060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b23374b5d6d8298a2b2afa29a908984817f7e7d7e7f82858a919ba3afb2a298826e5e4c381c0c000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000000031729394b6074869ca8b9b19f9784786a61574e493d3b3633292c2929292929282826252321212325272a263035393a464c556069778498a0b2b7a698826e5c4a361c0c00000000101f334758627886959ea8b2b3aca6a89f9c9b9a9a9b9c9ea8a6abb3b2a89e958475615443301a0a0000162b40566b8095abb0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0ac97826d57422d180014293f54697f94a69f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fa5937e69533e2914000000000000000000000d21364a5c687e939faab3b2a59c95908c898787868787898c8f949ba3b0b4b19f978272604a3a2a17040013293e53687e93a8b7a28c77624d3730303030303030303030303030354a5f758a9fb4ab95806b56402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051424324350616b80959eb0af9d947f69614f42312413050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081c2f3f4b61758498a0b1b4afa89e9a979493939394979a9fa9b0b5b1a0988476614c402f1d00000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000000000b1d32455663798a9ea8b8b1a29a897f756b635b56504b4639413f3c39383736363130353637383a3c3f36434b4e53586169737e899aa2b2b9a89d8876614c3e2d1b000000000004172a3a48596275808a959da5a9acb0b3b1b0b0afb0b1b3b0ada9a69d968a807461574636261400000013293e53687e939a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a957f6a55402a15000d22384d6278888a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8777624c37220d00000000000000000006192c3c4e647a8c9fb4b6a69d9187807b7774727171717274777a7f868f9ba3b2b1a0947e695847331f0a0013293e53687e93a8b7a28c77624d37221b1b1b1b1b1b1b1b1b1b1b20354a5f758a9fb4ab95806b56402b16000000000000050b0d0c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000061525334350626b80969fb0ae9d937f69604e42312313050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111e334657617482909ba3abb1b4afaca9a9a8a9aaacafb4b0aba39b90827461584633221200000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000000002152838495b657b8a9ea7b5b4a89e94898179716b666157595654514f4d4c4c4b44434b4b4c4e4f515457546063696f767f87939ea7b4b6a79e8a7a6458473320100000000000000c1c2b3b4856606b7780878e94979b9e9fa9a1a1aa9f9e9b98948f8881776a605546392918080000000c21364c617682858585858585858585858585858585858585858585858377624c37220d000b2035485a627375757575757575757575757575757575757575757575757575757575757262594834200b0000000000000000000c2035495a6f849aaab6a49c877c736b6561595d5c5c5c5d5861656a717a8598a0b2b49e8a76614c37210c0013293e53687e93a8b7a28c77624d37220d0606060606060606060a20354a5f758a9fb4ab95806b56402b1600000000080d182022211f170b000000000000000000000000000000000000000000000000000000000000000000000000000000071525334451626c81969fb1ae9d937e68604e413123130400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031729394656606e7b868e959b9fa9a5a6a8a8a8a6a5a99f9b958e867b6e6056463a29170400000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000000000000000000000000000000000000a1a2c3c4b5d657b899ba3b3b9b3a79e968e86807b76726e6c696764626261605554606061636566696c7074797e848a949da5b3b9b4a49c897b655c4a3a291702000000000000000d1d2b38454b59626b72797e8285888a8a8b8c8b8a8986827f7a736b62594b4437291b0b000000000a1f334658616e707070707070707070707070707070707070707070706e625948341f0b0005192b3c484d5d60606060606060606060606060606060606060606060606060606060605d4c483b2b18050000000000000000000d23384d62788da2b3b29c8677666054504c473b4746473a474c50555c64738298a6b8a8937e69543e29140013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000002101b222b34373633291b0b000000000000000000000000000000000000000000000000000000000000000000000000000000071626344451636c81979fb1b59f8d7e685f4d4130231204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b2938454b5d65717980868a8d909192939291908d8a86807971655d4b4538291c0c0000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000000000000e1e2e3f4b5d657885939ea7b3b8b3aba49c95908b8783817e7c79787776757575757676787a7c7f8285898e939a9fa9b2b6b4aa9f968679655d4b3e2d1c0c0000000000000000000d1a28323b474c565b63696d707374757676757473716d6a6460544c483b3127190b00000000000417293a464c585b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b594c483b2a180500000e1e2b3538484a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4837342b1d0d0000000000000000000013293e53687e93a8b9a8907b65594a433637342a3231322a33373a3e4b556175889eb3af99846f5a442f1a0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000010202e373b484d4c463a291b0b00000000000000000000000000000000000000000000000000000000000000000000000000000008162634454a60728197a0b2ab9f8d7d675f4d4130221204000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1a28323f4b505c646b7175787b7c7d7e7d7c7b7875716b645c504b3f32281a0c000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000000000000000000000000000000000000000011212e3f4b5a62737e89959ea6afb4b6b1abab9f9c999694918e8d8c8b8b8a8a8a8b8c8d8f9194979a9ea8a8afb4b7b2aa9f988b8075635b4b3f2e201000000000000000000000000a161e2a34373d4a4e54575b5e5560616160565e5b58544f4a4336342a1d1509000000000000000b1b29333643454545454545454545454545454545454545454545454437342a1d0d000000000e192022333535353535353535353535353535353535353535353535353535353535332220180d0000000000000000000000172c41576c8196acb49e89745d4b3b3025221f181c1c1c181f22252e3746576d8298adb29d87735d48331e0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600081b2e3e4b4f59626158463a29170400000000000000000000000000000000000000000000000000000000000000000000000000000008161c30435460728298a0b2ab9f8d7d675f4d4030221203000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e2f373e4a4e5655606366676869686766636055564e4a3e382f1e160a00000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000000000000000000000000000000000000000311212e3c48556069767f8891999faaacb1b5b5b2aeaba9a6a4a2a1a1aa9f9faaa0a1a3a4a6a9acafb4b9b4afaaa59d958b82796b6056493d2e211102000000000000000000000000030d181f222d36393f424637444b4c4c4b453846433f3a3530251f180d020000000000000000000b171f212e303030303030303030303030303030303030303030302e221f180d000000000000050b0d1e20202020202020202020202020202020202020202020202020202020201d0d0b05000000000000000000000000182d43586d8298adb29c87725d3f2f1c130c0b04000700040a0c10192839566b8095abb49f8a745f4a341f0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000d22374b5c64717776615846331f0a0000000000000000000000000000000000000000000000000000000000000000000000000000000000132536435460738298a1b2ab9f8c7d675e4c402f2111020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002111c232d363937444b4e505153535351504e4b443739362d231c11030000000000000013293e53687e93a8c7a28c77624d37220d000000000000000c21364b61768ba0c5a9947f6a543f2a1500000000000000000000000000000000000000000003111e2b37444b58616a757c848b91979c9faba7aaadb0b3b4bbb6b6bbb4b4bbb5c7bab4b2afaca9a6a89e9a958e877f786d635b4b45382c1f1103000000000000000000000000000000050b0f1a2124292d302731353637363127312d2a24201c130805000000000000000000000000040a0c191b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b1b190d0b050000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000192e43586e8398adb29c87725d47321d0000000000000000000000162b40566b8095abb49f8a755f4a35200013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000f253a4f647b858c8976614c36210c000000000000000000000000000000000000000000000000000000000000000000000000000000000008182636445560738299a1b3aa9f8c7c665e4c3f2f2110010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080f1a2124263135383b3c3d3e3d3c3b3835312624211a0f0800000000000000000013293e53687e93a8afa98c77624d37220d000000000000000c21364b61768ba7afa9947f6a543f2a1500000000000000000000000000000000000000000000000e1926313a474c5660676f767c82878b8f9295989b9d9faaa1a2a2a3a3a2a1a0a99f9d9a9794918e89857f79726a625a4e493d32281a0f0100000000000000000000000000000000000000070c0e14181b151d202121201d151c18150f0b07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060b0d11110e0c0600000000000000000000000000000000030a0c1011100b08010000000000192e43586e8298adb29d87725d3d2d1a0700000000000000000000162b41566b8096abb49f8a755f4a35200013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16001d32475c72879ba3937d68533a2a1704000000000000000000000000000000000000000000000000000000000000000000000000000000000008182637445560738399a1b3aa9f8b7c665d4c3f2e1f0f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070d0f141d20232627282928272623201d140f0d07000000000000000000000011263c51667c91989a978b75604b36210b000000000000000b20354b607489979a99927d67523d281200000000000000000000000000000000000000000000000009141d293338454b525861676d71767a7d808385888a8b8b8c8d8e8e8d8c8b8a898785827f7c7975706a645c554d483c352c1e160a00000000000000000000000000000000000000000000000000020001080b0c0c0b0902000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e1018150c0a040000000000000000000e192023262623211a0e00000000000000000000000000000b161e21262725201d150900000000182d42576d8197acb49f89745b4a36211000000000000000000008182d3e586d8398adb39e89745e49341f0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600182d42586d8297ad9a85705847331f0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000009192737445560748399a2b3a99f8b7b655d4b3d2d1e0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0e111213141312110e0b080100000000000000000000000000000f24384c5e687e8384827b655745321e0900000000000000081d314455647a8284837e73604b35200b00000000000000000000000000000000000000000000000000010c171f2832363a464c5157586165686a6d7073747576777879797877767574726f6c6a67646055554e4a3e38342b211a0e030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003111c23252e2b221f180c00000000000006141e2b35383c3c38352c1f150700000000000000000000000e1b2932363b3c3a3531271909000000142a3f54697f94a9baa98e79634e3e2d1c0c00000000000000091525364a5c71869bb1b19c86715c47321c0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b160010253a50657a8fa59f8b77614c37210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000919273745566074849aa2b4a99f8a7b655c4a3c2b1b0b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091d30404e60686e6f6d655d4b3928160300000000000000011426374a5c646d6f6e69605443301c08000000000000000000000000000000000000000000000000000000040a161e212933363c3a464c4f5255585b5e5560616263646362626160555d5a5754514e4b443739362d2220190d06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e101617150d0c0600000000000000000000000000000000000000000000000000000000000000000311212e373a434037332a1c1002000000021424313c494d51514e493d332515030000000000000000000e1e2b39464b50514f4b443727190900000f24394e647a8ea3b5ac96816c5c4a3a2a1b0a00000000020f192731435464798ea3b5ac97826d57422d180013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000e23374b5d72879caa917c67513c271200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000919273845566075849aa2b4a89e897a645a48392816030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b0e0b08010000000000000000000000122231424e53595a584f4b3f2e1b0a00000000000000000009192e3e4a4f575a59544b4336261401000000000000000000000000000000000000000000000000000000000002090b171f21272933363a3d40434637444b4c4d4d4e4e4d4c4b4b443745423f3c3935312624211a0f0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003111c23252b2c2a2320190e0000000000000000000000000000000000000000000000000000000000000011212e3f4b4f58554c473a2d20100000000b1f31424e5a626666635b504333200d000000000000000006192b3c49576165666560554437271501000d21364a5c70859bb0b49f8b7a64584739281a0a00000a161e2d37444b60728399afb6a4907c66503b26110013293e53687e93a8b7a28c77624d37220d0000000000000000000417293a5f758a9fb4ab95806b56402b1600081c2e3f566b8095ab96816c56412c170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a283845576175849aa3b4a79d8878625746321e1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e151d2023201c140800000000000000000000041424313a3e4345423a372e2111000000000000000000000010202e363a4245443e3530261808000000000000000000000000000000000000000000000000000000000000000000040a0c12171f2125282b2e302731363637383939383736353126302d2a2724201d140f0d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000311212e373b40413f38352c1e0e00000000000000000000000000000000000000000000000000000000000a1a2e3f4b5d656d6a61584a3e2d1b0b000011263b4e6069787b7b786a61503c281300000000000000000b2035495a62757b7c7a73605544311d0800071a2d3d50667b90a0b2aa9d877661574538281909111a28323d4a55606c8095a1b3b19c8673604b35200b0013283d53687d92a8b7a28c77624d3722120b090300050002080b101f334758758a9fb4aa957f6a55402a1500071b2d3e53687d92a89a856f5a45301a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1a283946576175859ba3b5a69c8675614b3e2e1b070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c121a21232731353935302618080000000000000000000006141f26282e2f2d25231c1103000000000000000000000002101b22242d2f2e29201c14080000000000000000000000000000000000000000000000000000000000000000000000000000040a0c101315181b151d202122232424232221201d141a1715120f0b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011212e3f4b505557544d493c2c1a0a000000000000000000000000000000000000000000000000000000031628384b5d657b838077645c4a392917030014293e53697e8d91918d7f6a55402a1500000000000000000d23384d62788990918f8673604b35200b00000f23384c5e6e8398a6b6a59b84756056453727191f2e38454b5b637481959eafb2a0917c665443301c080012273c51677c91a6c4a38e79644e3c3025211e161b1a1b151d20242e3a4c61768caabba8937d68533e2813000d22364a5c6c8196ac9c87715c47321c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1b293946576176859ba4b5a497826d5c4a36220d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002080b10171f21272c353837444b4e4b433626140100000000000000000000020b1113191a18100e08000000000000000000000000000000070d0f181a19140b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030002080b0c0d0e0f0e0d0d0c0b0801000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081c2e3f4b5d656b6c6a625a49382715020000000000000000000000000000000000000000000000000000091e324556657b8b9895877a645746331e0a001a2f445a6f8499a6a69b86705b46311b060000000000000012273d52677c92a7a6a48d79634e38230e0000091c2f404d6277889ea9b4a29a83746055443729333f4b56606b7985979fafb5a498826e5e4c36261401000e23394e63798ea6b7a9947f695b4d403a363228303030273136393f4b58677c91a6baa9907b66513b2611000f24394f64798c9fb29c87725d47321d00000000000000000000000000000000000000000000000000000000000000000000070c0e1414141414141414141414141b293946586176869caab19f8f7a644f3a240f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e151d20252933373c3d494e53556063605443301c08000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23374b5d657b80817f78625645311d0900000000000000000000000000000000000000000000000000000b21364b6075879daaa69d8976614c36210c001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7c2a38d78634e38230e0000001120344859647a8b9fabb3a19983736055443a464c5d6574808c9ba3b1b2a49c8675614b4030180800000b20354a6073889db3b39e8979665e544f4b453846454637444b4e545d6576879cb2b49f8a75614b36210c001b30465b70859baab29c87725d47321d0000000000000000000000000000000000000000000000000000000000000000010f1a21242929292929292929292929292929293a475863798c9fb4ac97816c57422c17020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c121a21232731363a3a474c51575b63696e757873604b35200b0000000000050b0d0c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e10191d1e1e1e1e1e1e1e1e1e1d100e08000000000000010a10121d1e1e1e1e1e1e1e1e1e1c180e0c07000000000000000000070b0f101010101010101010101010101010100f0d0c0a04000000000000000000000000000000000000000010253b50657b909596948974604b36200b000000000000000000000000000000000000000000000000000317293953687d93a5b6b49e8976614c36210c001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000005182b3b4b5c677d8d9fabb3a199827360554d58616d7b86959faab5b3a0988677625746322212000000071c3043546b8095a6b8a79d887c716a6460565c5b5a5b5c55606469707a869ca5b6a999836e5746321e0a001f354a5f748b9fb4b29c87725d47321d00000000000000000000000000000000000000000000000000000000000000000f1f2d36393e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3a4a5b6f859aafb19b86715c46311c070000000000000000000000000000000000000000000000000000000000000000000000000000000000070c0e171f21272c353837444b50555861676d72787e84898e806b55402b16000000000d182022221f18100b0902000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003111c23252e323333333333333333333225221b100300000005131e252833333333333333333333322d23211a0f01000000000008131c2024252525252525252525252525252525252423211f17150d0c060000000000000000000000000000000013293e53687e93a8aca78c77624d37220d000000000000000000000000000000000000000000000000000a1e33465770859bb0b6a5937e695846331f0a001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000000000d1d2e3e4d5f687e8d9fabb2a1988273605f6776828d9ca4b4b1a69d91827562594739291604000000001325364c6176889da9b8a69d91867f7a767371706f70717375797e858f9ca4b6b49f8b79634e392916030020354a60758aa9bab29c87725d47321d0000000000000000000000000000000000000000000000000000000000000009192d3d4a4e545454545454545454545454545454545454576c8297acb39d88735e48331e090000000000000000000000000000000000000000000000000000000000000000000000000000050b0f1a21242a33373c3d494e535560656b70767c82878d93999e9b86705b46311b0000000e1d2b343737332a25201d150e0c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111212e373b4447484848484848484848473a372e21100000011323303a3d48484848484848484848474339362d1f0f0000000008182530353a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a39383633292a2320190e07000000000000000000000000000013293e53687e93a8c5a28c77624d37220d000000000000000000000000000000000000000000000000000c21364b61768a9fb4b29d8774604b3a291704001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0000000000102030414e60687e8d9fabb2a09882736e7c88979fabb6b39f97887c6e6157473b2a1b0b0000000000081f334658657b8b9ea7b5b3a49c948f8b888685858586888a8e939ba3b1b6b29d947f6a5b4a361b0b000020354a60758a9fb5b29c87725d47321d000000000000000000000000000000000000000000000000000000000000011527374a5b63696969696969696969696969696969696969696c8196acb49e89745f49341f0a000000000000000000000000000000000000000000000000000000000000000000000000010d181f222d36393a474c52575b63696f757a80868b91979da5a8aeb29c87725d47321d00000e1e2c3b484d4c473a3b36312723211a120c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2e3f4b50595d5e5e5e5e5e5e5e5e5e5d4f4b3f2e1b08000a1e30414d525d5e5e5e5e5e5e5e5e5d5c584e4a3d2d1b0b000000132536434a4f5050505050505050505050505050504f4e4d4c463a3f38352c211a0f0100000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000010253a50657a8faabbaa957f6a5544311b0b00001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000000000002132331414e60687e8d9fb5b2a0988283919da6b5b8a79e908276675f4b46392a1d0d0000000000000417293a4b5d667c89989fabb3b1a9a4a69e9b9b9a9b9b9d9faba9b0b4b1a59d917f6a614f3d2d1a00000020354a60758a9fb5b29c87725d47321d000000000000000000000000000000000000000000000000000000000000081d31445563797e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e849ab0b49e89745f49341f0a000000000000000000000000000000000000000000000000000000000000000000000009141d2a34373d4a4e555861676d72787e84898f959b9fabacb2b7b4b0aa9a85705a45301b0006192c3c495962615856504b453839362d27221f18100b090200000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d4b5d656e7273737373737373737372655d4b37220e0010253a4d5f6772737373737373737373716d635b4a3929170300071c304354606465656565656565656565656565656565646261585a554d493c362d1f1507000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000012273c52677c91a7c8a58f7a65503727150000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000000000005132331424e60687e939caeb2a09899a1b3b7c4b39e897b6d61584d4133291b0d00000000000000000c1c2e3f4c5e6678838c989ea7aaadb0b3b1b0afb0b1b2b3b0aca8a39b93877c6a615043321f0f00000020354a60758aa9b9b29c87725d47321d0000000000000000000000000000000000000000000000000000000000000b20354b60748893939393939393939393939393939393939393939aa2b4b49e89745f49341f0a00000000000000000000000000000000000000000000000000000000000000000000091926313b474c545b636a70777c82888d93999ea8aab0b4b7b2acab9f9b958e7e68533d2813000c2035495a637777716b656056544e4a3d3d37342a25201d150e0c07000000000000000000000000000000000000000000000000000000000000000000000c2135495b657b8387888888888888888888877b654f3a25100012283d52677d87888888888888888888878279635746331e0a000b20354a60727a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a797876736f6a625a4e4a3d332515070000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013283e53687d93a8b8a38d78634e38230e0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0000000000000005132431424e60697e93a2b4b2adaeb3b4b0b4b8a7937e69604e41311e170b0000000000000000000011212f404c5a626e7982899094989b9e9faaa1a1a99f9d9a97938d867e74675f5043332515010000001f344a5f748b9ea8a69c86715c47311c0000000000000000000000000000000000000000000000000000000000000d23384d62788da6a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9a9b0b4c0b49e89745f49341f0a00000000000000000000000000000000000000000000000000000000000000000008182637444b59626a71797f858b91979da5a8aeb4b9b4afa9a69d97918b85807a68604e3a2511000e23384d63788c8b86807b756f69635b58524c473a3b36322824211a110b09030000000000000000000000000000000000000000000000000000000000000e23384e63788c999c9d9d9d9d9d9d9d9d9d98836e58432e19001c32475c71869c9d9d9d9d9d9d9d9d9d9c988975614b36210c00142a3f54697f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8e8d8b88847f7870645c50433325150200000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000000000003101e2c37444b5b6374859aafc4c0b3a89e9aa2b2b59f8d7e685f4e41302312040000000000000000000311222f3c494d5c646d747a7f8386898a8b8c8b8a898885827e78716960564d413325150700000000152a3f546a7f898c8c887c67523d27120000000000000000000000000000000000000000000000000000000000000d23384d62788da6a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a89d88735e48331e090000000000000000000000000000000000000000000000000000000000000000001325364455606a777f868e949b9fabacb2b7b6b1aba99f9a948e88827c76706a645c4e42311e0b0013283e53687d939f9b959089847e79736d67615956504b453839362d27211e160a0800000000000000000000000000000000000000000000000000000000152a3f556a7f94aab2b3b3b3b3b3b3b3b3af9a856f5a45301a001e33495e73889eb3b3b3b3b3b3b3b3b2b1a7917c66513c2711001a30455a6f859aa5a5a5a5a5a5a5a5a5a5a5a5a5a5a5a4a3a2a69d99948d84796a61504333201000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000000000210212e3c4955606a79859aa2b4b9b3a29a8a8599a1b2ab9f8d7e685f4d413022120100000000000000000003111e2b353e4a4e5560656a6d717374757676757473706c69625a544b453830231507000000000013273c4f616a75777774675f4d3925100000000000000000000000000000000000000000000000000000000000000b20354b60748893939393939393939393939393939393939393939393939392836e59442f19040000000000000000000000000000000000000000000000000000000000000000071c30435460737f8a949ca4aab0b4b9b3aea8a49c96908a847e79736d676158554e4a3e3123130100142a3f54697f94a9b0aba89f99948e88827c77716b656056544e4a3d3c363228231c11050000000000000000000000000000000000000000000000000000182d43586d8298adbbaa9f9e9e9e9e9e9e9e98836e58432e19001c32475c71869c9e9e9e9e9e9e9ea7b9c5a9947f6a543f2a15001b30455b70859aacacacacacacacacacacacacacacacacadaeb1b3afaaa29a8c7f6a61503e2e1b08000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000000000010202e3f4b5a63747f8b9ba3b4b2a79e928478748399a1b3ab9f8d7d675f4d402f1f0f00000000000000000000000e19202d3637444b5055585b5e5660616160555e5b57534d493c3632281a12040000000000000c2032434f5560626260544d41301e0a000000000000000000000000000000000000000000000000000000000000081d31445563797d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d76614c37210c0000000000000000000000000000000000000000000000000000000000000000001325364a607282959fa9b1b6b6b1aba89e99938d87817b766f69635b57524c473a39362d201305000012283d52677d92a6aeb3b8b4afa9a69d97928b86807b756f69635b58514b4539372e20190e00000000000000000000000000000000000000000000000000192f44596e8499aeb49f8c89898989898989877a65503a25100013283d53687d88898989898989898fa8b9ab95806b56402b1600182d42576d82959696969696969696969696969696969797999c9fabb3b4aa9f947f6a5c4b37220e000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000000000c1c2d3e4b5d657885959fa9b5b3a199897d6f6260748399a1b3ab9f8c7d675e4c3d2d1c0c0000000000000000000000060f1a212731353b3f434638454b4c4c4b443745423e38352c201d150a00000000000000000315253237444b4d4c4b43363023130100000000000000000000000000000000000000000000000000000000000001142637495b6368686868686868686868686868686868686868686868686868615847331f0a0000000000000000000000000000000000000000000000000000000000000000071c304354697e93a0b4b9b3aaa49c958f89837e78726c666057544e4a3d3c37332a24221b10020000000c22374c61778892989ea7aab0b4b7b2adab9f9b96908a847e79736d666057504b3f352b1e0e0000000000000000000000000000000000000000000000001a2f445a6f8499afb09b857474747474747473655d4b37230e0011263a4e606873747474747474748a9eb4ab96816c56412c17000d22374c627780818181818181818181818181818181818284878b939da6b6b49d8f7a644f3c2c19060000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0000000417293a4a5c657b899ba3b4b2a69d91837768604d566074839aa2b4aa9f8c7c665b4a3a2917040000000000000000000000000709151d20252a2e312731363736353127302d292320190e0902000000000000000000000715192731363737353026181305000000000000000000000000000000000000000000000000000000000000000009192c3d494e535353535353535353535353535353535353535353535353524c473a2a170400000000000000000000000000000000000000000000000000000000000000000b20354a6073879db2b6a79e958e86807a756e68625a56504b453939362d27211f170f0d0700000000000a1f33475861767d83898f959b9fabadb2b7b5b1aba99f99948e88827c756d655d4d483c2c1e0e00000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715e5e5e5e5e5e5d504b3f2e1c08000b1e31424e535e5e5e5e5e5e5f74899eb4ab96816c56412c17000b1f344859626b6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6c6d6f72777e889ca5b6b09a85705a4935200c0000000000000013293e53687e93a8b7a28c77624d37220d0b0b0b0b0a090705010000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0000000a1f334658647a8a9ea7b5b4a098887c6e62594e4245566074849aa2b4aa9e8a79635846331f10000000000000000000000000000001080b1015181c151d202121201d151b17140d0c0600000000000000000000000000000009151d202222201c140800000000000000000000000000000000000000000000000000000000000000000000000e1f2c35383e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3d37332a1c0c0000000000000000000000000000000000000000000000000000000000000000000e24394e63798ea5b6a59d898079716b656055534d483c3b36322824211a120c0a04000000000000000004182a3a475861686e747a80858b91979da6a9afb4bab4afa9a69d979189827a6f625a493c2c1906000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b4949494949483a372e21110000021324313a3d4949494949495f74899eb4ab96816c56412c170005182a3b484c5657575757575757575757575757575757585959616977879cb2b4a28d78624d38230d0000000000000013293e53687e93a8b7a28c77624d372220202020201f1e1d1a16130d0b0500000000000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0000061a2c3d4c6176879da8b9a99f928276675f4c483b313845566175849aa3b5a89d8776614c3e2e1b07000000000000000000000000000000000000030002090b0c0c0b08010002000000000000000000000000000000000000000002080b0d0d0b0801000000000000000000000000000000000000000000000000000000000000000000000000000e1a212328292929292929292929292929292929292929292929292928211f170c0000000000000000000000000000000000000000000000000000000000000000000012273d52677c92a7b29d87776b635b564f4b443738352b26211e160e0c07000000000000000000000000000c1c2a3a474c535560646a70767c82888e949a9fa9abb1b6b7b2ada89e988f8478635a49352011000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46343434343325231c110300000006131e26283334343434495f74899eb4ab96816c56412c1700000d1d2a34374041414141414141414141414141414142423a474c59657b90a7b8a8937e68533e29130000000000000013293e53687e93a8b7a28c77624d373535353535353433322f2c282220190d080100000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000c2136495b6d8297a6b7a99f8b7d6d61584d41342b1d283846576176859ba6b7a597816c5c4b37220e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e131313131313131313131313131313131313131313131313130c0a04000000000000000000000000000000000000000000000000000000000000000000000014293f54697e94a9a9947f6a594e493d3a353127222019110b090300000000000000000000000000000000000c1c29333737444b4f555861676d73797f848a90969ca4a8aeb4b9b4ada29a8878634d3f2f1c080000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311f1f1f1e100e08000000000000020b11131e1f1f1f34495f74899eb4ab96816c56412c170000000d181f222b2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2c2d2a343b4b6074889eb3ac97826d57422d180200000000000013293e53687e93a8b7a28c77624d4a4a4a4a4a4a4a49484745413d37342b201d1409000000000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00001325364e63798c9fb4b49f8b7b675f4c473a3020180d1a283946586277889dabb49f8c7a644f3c2c1906000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004070001080b080100060300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f546a7f94a9a7927d67523b352c25201d150d0b05000000000000000000000000000000000000000000000c171f212631353a3a474c52585b63696f767b81878d93999fa9b0b4b4a69b85705d4c38230e0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0909080000000000000000000000000009090a1f34495f74899eb4ab96816c56412c1700000000050b0d161717171717171717171717171717171718181f30435471869bb0ae99846e59442f190400000000000013293e53687e93a8b7a28c7762515f6060606060605f5e5c5a56524d483b35312619110300000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00071c3043546c8197abb7a5937e685d4d41332a1c1205000b1b293a4859657b8c9fb4ab9a846f5a4935200c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030a0c1115191c1e151d201d151d1b1814100b0801000000000000000000000000000000040d1416202020202020202020202020202020202020202020202020191710070000000000000000000000000000000000000002060001080b080100040000000000000000000000000000000014293f54697e94a9a9947e69584c473a39353025221f18100b080100000000000000000000000000000000000000040a0c141d20252a33373c3d4a4e545760666c72787e848a929ba3b0b5a3907b65503b26100000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000000000000010202020202020202020202020202020200041426365a70859aafb09a85705b45301b0600000000000013293e53687e93a8b7a28c776267747575757575757473726f6b686259534b44372e211305000000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000b20354a6072889eb3b29d8773604b3f301f170c000000000b1b2b3b4b5d6d8297adb3a18d78624d38230d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090b161e21272b2e3133273135312733302d2a25201d140907000000000000000000000000081621282b3535353535353535353535353535353535353535353535352e2b24180a0000000000000000000000000000050b0d13171b1e151d201d151d1915110b0802000000000000000000000012283d52677d92a7b19c8676696158544e4a433637342a25201d150d0b050000000000000000000000000000000000000001080b0f171f21272d363939454b51565a62686f767d85969eb0ab96816c56412c170000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000000000000000000000000000408090a0b0b0001080b0c0d17293a5a70859aafaf9a846f5a452f1a0500000000000013293e53687e93a8b7a28c77677d8a8a8a8a8a8a8a89888784817d77706860554b3f312313050000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000e23384e63798da7b8aa95806a5443302013040000000000000d1d2e3f4f64798faabba8937e69533e2914000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007121d242932363c4043474849444b44494846423f3a353126221b1006000000000000000000041626333d404a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a43403628180000000000000000000000010a0d192022282c30332731353127322e2b26201d1509050000000000000000000f24394f64798ea6b6a49c887e77706a646054524c473a3a353127222019110b090300000000000000000000000000000000000000040a0c121a21242832363b3c484d53576167708096abaf9a856f5a45301a0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000000000000000000060c0e14191d1e1f202020141d2021232633465871869cb1ad98836e58432e190300000000000013293e53687e93a8b7a28c776f8499a99f9f9fab9f9e9d9c9a96928b857d73655d4e413123130000000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0010263b50657b90a5c5a7917c67523626140200000000000000001020354b60758a9fb4ac97816c57422c1700000000000000000000000000000000000000000000000000000000000000000000000000000000000002101b222f3839464b5155595c5e5f5560555e5d5b5854504b4437362d20190e00000000000000000d21334450555f6060606060606060606060606060606060606060606060595346361d0d00000000000000000006131d252b34383e42464849444b44374744403b36312720190e01000000000000000b20354b6074889eb3b6a69d938b857f79746d676159554f4b443738352b26211e160e0c060000000000000000000000000000000000000000070c0e161e21262b353839464b5261778ca9b19c86715c47311c0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c170000000000000000060f1a21232a2f323335353535263135363836434c61768b9fb4ab96816b56412c160100000000000013293e53687e93a8b7a28c7770869bb0b1b1b1b1b1b2b3b1afabab9f9a92867b685f4e41301d0d00000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0011263c51667b91a6baa48f7a654f3a2510000000000000000000081d31445573889db2ad98826d58432d1800000000000000000000000000000000000000000000000000000000000000000000000000000000000412202d36404c515761666a6e7173747575747372706d696560554f4a3e352c1e120400000000000014283d50626b7575757575757575757575757575757575757575757575756e64533b2a1805000000000000010f1a2130393c484d53575b5d5e5560555e5c5955504b4437352b1d1409000000000000081c3043546a7f94a1b4b7b3aa9f9a948e88827d77716b656055534d483c3b3632282320190e0000000000000000000000000000000000000000000003090b111920232932364758748a9fb29c87725d47321d0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000000000000000e1a212c36393f4447494a4a4a4a4a444b4c4d5054606a8095aabaa9907b66513b26110000000000000013293e53687e93a8b7a28c776e83999c9c9c9c9c9c9c9d9faaa7aeb4b0a49c8c7d685f4d3b2a1805000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0011273c51667c91a6b9a48f7a644f3a250f000000000000000000011426375d72889db2ad98836d58432e1800000000000000000000000000000000000000000000000000000000000000000000000000000000041222303e4a4f5e666f767c80838688898a8a8a898885827f7a746d645c4d493c2f2212040000000001142637556b808b8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8b826e5948341f0b000000000002101f2c35414d525a62686c70737475757473726e6a6660554d483c312619090000000000011426364b607383969faab2b7b4afa9a69d98928b86807a756e68625a56504b453838352c1e13050000000000000000000000000000000000060b0d151d20252a343736434b5061768ba9b19c87715c47321c0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000000000003111f2c353d494e54595d5e5f6060606055606162656a737e8c9fb4b49f8a76614b36210c0000000000000013293e53687e93a8b7a28c77647b8587878787878787888a8d92999fabb5aa9f8d7d675947341f08000013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0011263b51667b90a6b9a48f7a644f3a25150c0a0400050001080b101b2e3f5d72889db2ac97826d57422d1800000000000000000000000000000000000000000000000000000000000000000000000000000000122230404d5c64707c848a9195989c9d9e9faa9f9e9d9b97948f88827a6e625a4c402f221200000000081d31445574899eaa9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9f9fab9f8c77624c37220d000000000010202d3d494e5f6770787d818588898a8a89888783807b756c625a4b44372719090000000000081d3144556074808b959da5abb1b6b8b3adab9f9b958f89837d78726c666056544d493c3023130100000000000000000000000003090b111920232731353a3a474c525460656f7f95aaaf9a85705a45301b0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000000000011212e3d494e5b63696e72737475757575757576787b8086939faab7a695806b5746321e090000000000000013293e53687e93a8b7a28c77626470717171717171727375787d838c9ba3b5ab9e8977624c362614010013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0010253a4f657a8fa4c2a6917b66513f3228221f181b1b1b141d20232d394b5d74899fb4aa95806a55402b150000000000000000000000000000000000000000000000000000000000000000000000000000000c1c30404d5f677a8591999fa9aaaeb1b3b2b1b1b1b2b2b0ada9a79e978c8378665e4c402f1d0d0000000b20354b60758aa6b1b1b1b1b1b1b1b1b4b9c6b5bab4b1b1b1b1b1b1b1b1ab8e78634e39230e000000000e1e2d3e4a5b63707c858c93979b9d9e9fa99f9e9c9995908981786a6055443727150200000000011426374556606b7880878f969ca4a8aeb3b8b5b0aaa79e99938d87817b756f69635a4d41301e0a000000000000000000070c0e161e21262b353837444b50555961676d747b84959eafac97816c57422c170000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000000000d1d2e3f4b5b636f797f8487888a8a8a8a8a8a8a8b8d90959ca4b4b4a69d8876614c392816030000000000000013293e53687e93a8b7a28c77624f5b5c5c5c5c5c5c5d556063686e79859ba5b6a796816c5443301c080013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000c22374c61778ca4b5ac97816c5d4b453837332a313030263135393e4a57647a8fa8baab927d68533d2813000000000000000000000000000000000000000000000000000000000000000000000000000004172a3a4c5e677d8b9ba2aeb4b0a9a4a79e9c9c9b9c9d9fa9a5aab2b3ab9f988a7c665e4c3b2b18050000081d31445573889b9c9c9c9c9c9c9c9c9ea8b9baa99f9c9c9c9c9c9c9c9c9c8c76614c37210c00000006192c3c4a5c647984919a9fabacb0b2b2b1b1b1b3b1aeaaa79e978a7f73605544311d11000000000009192738454b5a626b737a80878d93989ea7aab0b4b9b3aea8a49c96908a847e78675f4d392510000000000003090b121a21232832363b3c484d535560656b71777d82889099a1afb5a4907b66513b26110000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000005182b3b4b5d6579838c94999c9e9faa9f9f9f9fa0a1a2a5aab1b4aea29a8879635846331b0b000000000000000013293e53687e93a8b7a28c77624d4647474747474737444b4d525b6376879cb2b39d8873604b35200b0013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e000a1f33475871869cb1b49f8b7c6a6056514c473a46454537444b4e535c6475859bb0b59f8c77624d37220d00000000000000000000000000000000000000000000000000000000000000000000000000000a1f334758667c8d9fa9b4b2a39b948f8b898786868787898c90959ca5b2b5a89e8c7c66594834200a00000114263753687e8687878787878787868a9eb4b49f8b868787878787878786806a5847331f0a0000000c2035495a647a899aa2afb5b0a8a99f9d9c9b9c9da6a4abb3b3a99f958273604b3f2f1c0800000000000a1a27313c484d5460656b72787d83898f949a9faaacb1b6b6b1aba99f9a948d7d67523d2712000000000a161e21272d363938454b50565a62686e757a80868b92989ea6afb3b5a79c8673604b35200b0000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c170000000b20344859657b89999fabaeb2b3b1b1b1b1b1b1b1b0aeada9aa9f99918478635b493a291700000000000000000013293e53687e93a8b7a28c77624d37323232323232273136383d4958687d92a7b8a68f7a644f3a240f0013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e0004182a3a54697e93a5b6aa9f8b7f756c6661585c5b5a5b5b55606368707a859ba3b5aa9a8570594834200b00000000000000000000000000000000000000000000000000000000000000000000000000000c21374c6176889dabb7a59d90857f7a7673727171717274777b8087919da6b7aa9e8977624c39281603000009253a4e60687171717171717171718399aeb19c867271717171717171716a61503a2a17040000081c2e3f4d6378899ea7b4b3a39b938d8a87868687888b8f959ea7b2b4a097826d5d4c38230d0000000000000a151d2b3536434a4f565a62686e747a7f858a91969ca4a8aeb3b8b4afa99a856f5a45301a0000000c1b2832363c3d4a4e545660666c72787e83898f959b9fabadb3b8b4aea39b8979635443301c080000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000004182a3a4c6277899ea7b5b3aea79e9c9c9c9c9c9c9b9a999894908a847c6f635a493d2c1d1406000000000000000013293e53687e93a8b7a28c77624d37221c1c1c1c1c151d20232c3a4d62788da2c4a6917c67513c27120013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c060000000000000012283d52677d92a7b8a38d78634e38230e00000c20364b6074879ca8b8a99f9488817b777471707070717275787e858e9ba3b5b49f8c7a644f3b2b180500000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d566b8095a6b8a69d877b71696461575d5c5c5c5d5961656b737c889da6b7a797826c5745321e0900000b1e31424e535c5c5c5c5c5c5c5c6e8499aeb19c87725c5c5c5c5c5c5c5c555043331c0c0000000e23374b5d6f849aa7b8a89e91857e78757271717273767a808898a0b2b1a0907b65503b2b1805000000000000020e19202530353a3c484d535560646a70767b81878d92989ea7aaafb19c87725c47321d00000c1c2939454b51575b63696f757b81878d93999ea8aab0b5b9b3aeaa9f99908579635b4a362614010000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000a1f3447596e8398a7b8b2a1998e89878787878787868584827f7b776f665e50504d483c322514030000000000000013293e53687e93a8b7a28c77624d37220d0707070002080b0f21364b61768ba0b6a8937e69533e29140013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b46311c000000000000000012283d52677d92a7b8a38d78634e38230e0000091d324556647a8a9ea6b4b4a79e96918c898786858586878a8e939aa2b1b5b29e95806a5c4a361d0d00000000000000000000000000000000000000000000000000000000000000000000000000000c2135495b72879db2b39d8878655d544f4b46394746473b474c5054606678889db2b49f8a75604b36210b0000011323313a3d46474747474747596e8499aeb19c87725c47474747474747403c3325150000000010253a50657b8fa1b3ab9e8a7c70686360555c5c5c5761656b758298a1b3b09b8570594834200b00000000000000000508131c20252b353837444b4f555761666c72787d83898f949a9f9a85705a45301b000417293a475760676d73797e848a90969ca4a8aeb3b9b4b0aaa89e99928a837b70635b4a3d2d1808000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000c22374c61778b9fb4b2a09883797472717171717171706f6d6a66615859626565625a4f43321f0c0000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb09b86715b362614070000000000000412283d52677d92a7c7a28d78634d38230e0000021528384a5c657b88989fabb3b3aba6a89e9c9b9a9a9b9d9faaa8afb4b0a59d917f6a62503e2e1b0000000000000000000000000000000000000000000000000000000000000000000000000000000e23384e63798da5b6a9947e695a4b3f3a3633293131322a343736434a5a677d92a7baa9907b65503b261000000005131e252831323232323244596e8499aeb19c87725c473232323232312b2821150700000002172c42576c8197acb59f8d7b675f534e4b44374639464b4f5761728399afb59f8b77624d37220d0000000000000000000000070b101920232631353a39464b51575a62686e74797f858a8f806b56402b16000a1f33475861757c82888e949a9fa9abb1b6b6b2acaa9f9b958f89837d776e665e4e493d2d1f0f00000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000014293e53697e93aabbab988272645c5c5c5c5c5c5c5c5b595854514c6069787b7b7869614f3b27120000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb19b8671544330211a161414131415181f2a3a53687d93a8baa98b76614c36210c0000000a1a2d3e4b5d6577828c979ea7aaadb0b3b1b0afb0b0b2b3afaca8a39b93877c6a61504433201000000000000000000000000000000000000000000000000000000000000000000000000000000010263b50657b90a5c3a38e79644e3c2f24211e171c1c1c181f2225303c4c61778caabba9937e69543e291400000000010b11131c1c1c1c1c2f44596e8499aeb19c87725c47321d1c1c1c1c15130d04000000000417293a5d72879cb2af9a846f5e4d413835312631293236394654647a8faabbab927d68523d28130000000000000000000000000000060b0d141d20242933363c3c484d535460646a70767a74604b36200b000c21374c61768891979da6a9afb4b9b3aea8a59d97918b85807a756e686158514c40352c1f0f0100000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c170003182d43586d8298adb59f8c7862544a3e4747474747464544433f3e53697e8d90908c7f69543f29140000000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb39e8974604b3f362d2c2a2928292b2a343a47586c8196abb49f89745846331f0a0000000010202e3f4b59626d7982888f94989b9e9faaa1a1a99f9d9a97938d867e74665e50433325150200000000000000000000000000000000000000000000000000000000000000000000000000000012283d52677d92a7b7a28c77624d3722110c0a03000700040b0c131f334758758a9fb4aa95806a55402b15000000000000000007070707192f44596e8499aeb19c87725c47321d0707070700000000000000000a1f33465874899fb4aa957f6a55403023201d141c161e2128364b60758a9fb4aa947f6a553f2a15000000000000000000000000000000000001080b0f171e21262b353836434b4f55576164605645311d090012273d52677d92a6acb2b7b4b0aaa79e99938d87817c76706a656055524c473a382f211a0f010000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700011426375c71869cb1b09b86715a48362d323232323231302f2d30455a6f859aabab9b85705b46301b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb8a7917d675d4e4a3d413f3e3e3f403a474c596176889eb3af9a85705a3a291704000000000210212e3b484d5b636d747a7f8386898a8b8c8b8a898885817e78716960564d40332515070000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d00000000000000000004182a3a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000c21364c61768ba9baa8937e69533e29140b080100030a0c1d31445573899eb3ac96816c57412c17000000000000000000000000000000000000000000030a0c111920222630353a39464b4f4b453827150200142a3f54697f94a9b2acaa9f9b958f89837e78726c666158554f4b443737332a241c120600000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700081d31445574899eb4ac97826d573c2b181c1c1c1c1c1c1b1a1b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afc5b39e8a7b6d645c595654535354555859616977849aa7b8a7937e69533e291400000000000002101d2b343d4a4e5560656a6d717374757676757473706c68625a534b453830221507000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000020354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1c7a8937e69533e2914000000000000011426495e73899eb3ac97826d57422d1800000000000000000000000000000000000000000000000000050b0d141c20242932363a3631271a0a000013283d52687d92a59c97918b85807a746e68635a57514c463a3a353127211f170c09000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000b20354b60758aa8b9aa957f6a55402a1500070707070706051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afc4b9a89e8c8279736e6b696968696a6d71777f889aa2b4b39e8876614c37210c00000000000000000d18202d3637444b5055585b5e5660616160555e5a57534d483c3631271a120400000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000001e34495e73899eadac97826d57422d180000000000000000000000000000000000000000000000000000000001080b0f161e2125201d150a0000000e23384e63798c8d87817c76706a646055534d493c3c36332925201d150c0a040000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000c21364c61768ba1c6a9947e69543f291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afc5b8b3ab9f978e8883817f7e7d7e8082868c949da6b4b49e927d675847331f0a000000000000000000050f1a212631353a3f434638454b4c4c4b443745423e38352b201d150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000061c31465b7185959797937f6a553f2a150000000000000000000000000000000000000000000000000000000000000000030a0c0f0b0902000000000c2135495b637978726c666158554f4b443738352c27211f17100b08010000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8b7a28c77624d37220d0000001a2f445a6f8499afb8a79e9ea8aca69d99969493939495989b9fabb3b4a99f93806b5f4d3a2a170400000000000000000000000709141d20252a2e312731363736353127302c292220190e090200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000d22374d62777f82827e73604b35200b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000061a2c3d495b63625a57514c463a3a353126232019110c0a04000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8c7a28c77624d37220d0000001a2f445a6f8499afb39e8989989fabb1aeaba9a8a8a9aaadb1b3afaa9f988a7e6b625041301c0c000000000000000000000000000001080b1015181c151d202121201d151b17130d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000b20344859626a6d6c68605544311d0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2c3d494e4d493c3c36332925201d140e0c0600000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150013293e53687e93a8afa98c77624d37220d0000001a2f445a6f8499afb09b8577838c959c9faba6a8a8a7a6a5a79e9a938b8378696050443323130000000000000000000000000000000000000000030002090b0c0c0b080100020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000005182b3b484d555857534b44372715010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1f2c363938352c27211f170f0b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150011263c51667c91989a978b75604b36210b0000001a2f445a6f8499afb09b86716e7880868b8f9192939291908c88847e776e625a4f423326160500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000d1d2b34374042423e353127190900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010f1a2123232019110c0a040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000f24384c5e687e8384827b655745321e090000001a2f445a6f8499afb09b86715a626b71767a7c7d7e7d7c7a77736f6962594d483c3224160800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002050001080b0b07000004000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000000d1820222a2d2d28201d150900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060c0e0d0c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500091d30404e60686e6f6d655d4b392816030000001a2f445a6f8499afb09b86715b4d5557616566686967666562595a534c473b352b1e1406000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070c0e13171b1d151d20201c131c1915110b090200000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000050b0d151817130b08010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150000122231424e53595a584f4b3f2e1b0a000000001a2f445a6f8499afb09b86715b4639464b4f5153535251504c483b3e37342a20190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050b0f1a2124292c3032273135353025312e2a26211e160a080000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000302000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500000c1c2a3337424647453e3b31241402000000001a2f445a6f8499afb09b86715b462933363a3c3d3e3d3c3b37342b29221f180d0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020d181f222d36393e42454849444b4a43484743403b363228221b1005000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a150004172a3a474c575c5d5b534e42312010000000001a2f445a6f8499afb09b86715b46311e2125272829282725222018140d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e2a34373d4a4e53575a5d5e556060545e5c5955514b4538372e20190d0000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000a1f334758616c71727068604e3e2e1b070000001a2f445a6f8499afb09b86715b46311c0c101113141211100d0b0500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1a28323b474c555b63686c7072737475757473716e6a6660564f4b3f342b1d0f01000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000000000050b0d100f0c0a03000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a15000c21374c6176818687857e685c4b37220d0000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d1d2b38454b59626b72797e818587898a8a8a898886837f7b756e645d4d483c2d1f0f000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000000000d1820222524211e160b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500172c42576c81979b9c9a8f7a644f3a240f0000001a2f445a6f8499afb09b86715b46311c06000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b2b3b4856606a7780878e93979a9d9e9fa99f9e9d9c98959089837a6e625a4a3d2d1e0e0000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000008161d2b34373a3a3632291b1103000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013293e53687e93a8b7a28c77624d37220d000000000000000c21364b61768ba0b6a9947f6a543f2a1500192f44596e8499aeb2a6917c66513c27110000001a2f445a6f8499afb09b86715b46311c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417293a485962747f8a959ca4a8acafb2b2b1b1b1b2b3b1aeaaa89e988f8378635b4a3c2b190600000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000041626343b484d4f4f4b46392f2111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000013283e53687d93a8b7a28c77624d37220d010000000000020c21364b61768ba0b6a9947f69543f2a1400192f44596e8499aebba6917c66513c27110000001a2f445a6f8499afb09b86715b46311c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1f334658627785959ea8b2b4aca7aa9f9d9c9b9c9c9ea7a4aab1b4ada0988879635a4935201100000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000e213444515962656461574c3f2f1c080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b0600000000000011273c51667c91a6c7a28d78634d38251d151514131415151d26374c61778ca1b6a7927d68523d281300192f44596e8499aebba6917c66513c27110000001a2f445a6f8499afb09b86715b46311c060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071b2d3e4c6176869ba3b4b4a89e97918d8a8887868687898b8f949ca4b4b2a69d8978624d402f1c09000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000014293d51626b777a7976655d4c38230e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b060000000000000f253a4f647a8fa9baa6907b6651433631272a2928292a2832364350657a8fa5bbaa907b65503b261000192f44596e8499aebba6917c66513c27110000001a2f44596f8499a8a99b85705b46301b0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22364a5c6d8298a4b5ab9f9689827c7875727271717273767a7f87929ea8b7a79a846f5e4c38230f000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000001162c41566b808c8f8f8a7b65503b26100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b060000000000000c21364b61768a9fb4ae99836f60544b44373f3e3e3e3f38454b54606e8399aeb49f8b77614c37220c00192f44596e8499aec6a6917c66513c271100000011273c51667c8a8d8e8a7e68533d28130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f24394e64798ea0b2b49f8d80766d676260555c5c5c5d5761656a737d8a9eabb4a2907b66503b2611000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000091e33485e73889da4a897826c57422d170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000d22374c62778ca1b7a8937e69533e291400000000000000051b30455a70859aafb09b86705b46311b060000000000000a1e3246576e8399aeb3a1957f7266605557545453545557566066738095a1b2af9a846f5947341f0a00192e44596e8399aaaba8917b66513c26110000000f24394d5e667578787568604e3a2611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002152737576c8197acb5a3937e6b6157524d4b4437464739464c4f5460687b8c9fb4ad97826d58382715020013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000091e34495e73899eb3ac97826d57422d180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000c22374c61778caabba8937e69533e291406000000000000071528385a70859aafb09b85705b46301b060000000000000316293950657b90a0b2af9d95847b756f6c6a6968696a6c6f757c85959eafb2a0917c66513a2a180400152a3f546a7f919596948a78624d38230d0000000a1d30404d5660636360574e42311e0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081d31445572879cb1b09b8570604b463938353126313129333636434a5d6e8399aeb39d88735645311d090013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000c22374c61778cabbca8937e69533e291403000000000006182b3b5e73899eb3ac97826c57422d170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000b20354b60758a9fb4a9947f69543c2b20191615141515131c2032455670869bb0af99846f5a442f1a05000000000000000b23374b5d6d8298a2b2afa29a908984817f7e7d7e7f82858a919ba3afb2a298826e5e4c381c0c00000b20354a60727c80817f78635a4835200b0000000012223038454b4e4e4b45393124130200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20364b60758a9fb4aa95806a5542332922201d141c1c171e2125303f54697e94a9b8a68b75604b36200b0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000b20354b60748a9fb4a9947f69543a2a1e161514131415192034485974899eb4aa95806b55402b160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700081c30435473889db3ad98826d5a483c352b2c2a2a2a2b253035404b6075899eb3ac97826c57422d170600000000000000081c2f3f4b61758498a0b1b4afa89e9a979493939394979a9fa9b0b5b1a0988476614c402f1d000000071c30435460666b6b69635a493c2b19060000000004121a28323638393632281b13060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21374c61768caabba8937e69533e29170d0b08010000030a0c13283d52677d92a7c4a28d77624d38220d0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d070000000000000000000000081d31445573889eb3ac97826d58473a32282a2928292b2b353f4d62778ca8b9a8937e69533e29140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c170001142636596e8399aeb49f8a78625a4d483c41403f3f4036434a4f5e697e93a7b9a9927d68533d2820190e00000000000000111e334657617482909ba3abb1b4afaca9a9a8a9aaacafb4b0aba39b90827461584633221200000000132536434a515556544d493c2c1e0e000000000000000a161e212323211e160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7b8a38d78634e38230e0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d070000000000000000000000011426375a6f8499afb39e897761584b46393f3e3e3f403c494d5d6a7f94aab7a68f7a644f3a250f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c17000012273d52677d92a5b7a89b85786b625a595655545455575460646e7c8b9fb4b49f8a77614c3838352c1e16080000000000031729394656606e7b868e959b9fa9a5a6a8a8a8a6a5a99f9b958e867b6e6056463a2917040000000008182530353c40413f38352c1e0e00000000000000000002090b0e0e0b09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7b8a38d78634e38230e0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d0700000000000000000000000013283e53687d93a7b8a79a8476686157575453535455585a626c7b8b9fb4b39d8873604a35200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0600000000000000000000000000000000000a1f34495f74899eb4ab96816c56412c1700000b21364b6075879db2b5a39b898078726e6b6a696a6a6c6f747a838d9fa9baab97826c6056554d493c3326160300000000000b1b2938454b5d65717980868a8d909192939291908d8a86807971655d4b4538291c0c00000000000008131c20262b2c2a2320190e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7c8a38d78634e38230e0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d070000000000000000000000000c21374c6176889eb3b4a29a877d76706c6a6968696a6d7278818c9fa9b6a4957f6a5443301c070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311c0808070000000000000000000000000007080a1f34495f74899eb4ab96816c56412c170000091e324557667c909fabb5a79e958d8784817f7f7f808184888f989fabbab59f8c7d7975716b635a50443321110000000000000b1a28323f4b505c646b7175787b7c7d7e7d7c7b7875716b645c504b3f32281a0c000000000000000000070b111616140e0c0600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080e101b1e1d15130d0400000000000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7aeaa8d78634e38230e0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000000000004192f44596e8499aeb19c87725c47321d070000000000000000000000000a1f334758687d929fb4b4a59d928a85817f7e7d7e8083878d969faab6a69c8674604b362513000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46311d1d1d1c0f0d08000000000000010a10121d1d1d1f34495f74899eb4ab96816c56412c170000031628394c5e697f8d9ea8b4b3aaa59d999695949495979a9ea6adb5bcc9bcab9f928e8a8680786b62503f2e1c080000000000000a161e2f373e4a4e5655606366676869686766636055564e4a3e382f1e160a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b22253033322b28211507000000000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000010253b50657b909899978c76614c37210c0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000000000000000005060606192f44596e8499aeb19c87725c47321d070000000000000000000000000417293a4e606c81959fabb4b2a99f9a979493939495989ca4abb4b4a49c8879635645321808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b46333333333225221b100200000005131e25273233333334495f74899eb4ab96816c56412c170000000a1b2f404f61697d89979fa9aeb2b2aeabaaa9a9aaacafb3b8c5bdbdbdc9bcb5a7aa9f9b958c806b5d4b37230e0000000000000002111c232d363937444b4e505153535351504e4b443739362d231c110300000000000000000000000000000000000000000000000000000000000000000000000000050b0d1213100b090200000000000000000000000000000000000000000000000000000000000010212e373a464847403c332515000000000000000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000000e23374b5d677d8384827b655847331f0a0013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000000010a10121b1b1b1b1b2f44596e8499aeb19c87725c47321d07000000000000000000000000000c1c314152636c808c9aa2aab1b4afaca9a8a8a9aaadb1b3aea89e948679635b4a38281500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715b4848484848473a372e2010000001132330393c4748484848495f74899eb4ab96816c56412c1700000000112232434f5f6777818a92999da5a4a5a6a8a8a8a8a8a8a8a8a8a8a8a8aaacb0b4b4b0aa9f8f7a654f3a2510000000000000000000080f1a2124263135383b3c3d3e3d3c3b3835312624211a0f0800000000000000000000000000000000000000000000000000000000000000000000000000000d181f22272825201d150a00000000000000000000000000000000000000000000000000000000081b2e3f4b4f5b5e5c555043331c0c0000000000000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000000081c2e3f4d5f676e6f6d655d4b3a2917040013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000005131d252730303030303044596e8499aeb19c87725c47321d0700000000000000000000000000001323344552626b7a858e959b9fa9a6a7a8a8a7a6a5a69d9991897f74635b4a3d2d1a0a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b86715d5d5d5d5d5d5c4f4b3e2e1b08000a1e30414d525c5d5d5d5d5d5f74899eb4ab96816c56412c170000000004142432414d59616c767d84888b8f909192939393939393939393939394979b9faab3b5a38f7a65503a25100000000000000000000000070d0f141d20232627282928272623201d140f0d07000000000000000000000000000000000000000000000000000000000000000000000000000003111d2a34373c3d3b3631271a0a0000000000000000000000000000000000000000000000000000000e22374b5d657073726a62503a2a180400000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000112130414d52585958504b3f2e1c0c000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000001132330393c45454545454545596e8499aeb19c87725c47321d0700000000000000000000000000000517273444505c64707980868a8e9091939392918f8c88837c756a6056493d2d1f0f0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001a2f445a6f8499afb09b857272727272727271645c4b37220d001025394d5f6772727272727272748a9eb4ab96816c56412c170000000000061423303b474c5861686e72767a7b7c7d7e7e7e7e7e7e7e7e7e7e7e7f81858b949ea79b8572604a35200b000000000000000000000000000001080b0e111213141312110e0b0801000000000000000000000000000000000000000000000000000000000000000000000000000000000011212f3b474c5152504b4538281a0a000000000000000000000000000000000000000000000000000010253a4f657b858887806a5947341f0a00000000000000000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000000003132330393d4344423a372e211100000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600000a1d30414d525a5b5b5b5b5b5b5b6e8499aeb19c87725c47321d07000000000000000000000000000000091726333e4a4e5b636b7175797b7c7d7e7d7c7a77736e6760564b45382c1f0f01000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000192f44596e8499aeb49f8b87888888888888867a644f3a250f0012273c52677c87888888888888878d9fb5ab96806b56412b1600000000000005131d2a343a464c525958616466676868686868686868686868696a6c70777f88928978625443301c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091c2f3f4c59626768656056453828160300000000000000000000000000000000000000000000000004192f44596e83999d9c8c77614c37220c00000000000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000000000005131e25282e2f2d25231c110300000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600001025394d5f677070707070707070708399aeb19c87725c47321d07000000000000000000000000000000000816202d363d494e5555606366676869676665615959524b453831271a0f0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000182d43586d8298adbaa99f9d9d9d9d9d9d9d98826d58432e18001c31475c71869c9d9d9d9d9d9d9d9fabbca9947f6a543f2a1500000000000000000c181f2933363d3a464c4f5051535353535353535353535353555759626a767d78625a4836251300000000000000000000000000000000000000000000000000050b0d0e0c0a040000000000000000000000000002090b0e0d0b070000000000000000000000000000000000000e23384c5d65777c7d7a74605645321e09000000000000000000000000000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000010a1012191a18100e08000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000114263752677d858585858585858585899eb3b19c86715c47311c07000000000000000000000000000000000002101b222c363937444b4e515253535251504c473a3c3632281d150a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a40556a7f95abb3b4b4b2b2b2b2b2b2af9a856f5a45301a001e33495e73889eb2b2b2b2b2b2b2b4b3b2a7917c67513c2712000000000000000000040b171f21282933363a3b3c3d3e3e3e3e3e3e3e3e3e3e3e3f3b484c576168625a483c2b18080000000000000000000000000000000000000000000000010d181f2223221f180c02000000000000000000000a151d202322201c130800000000000000000000070d0f0d0b0510263b50657b8b9192908675604b36210b070d0f0d0b05000000000000000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000030403000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600081d31445573889a9a9a9a9a9a9a9a9a9ea7b8b09b85705b46301b0600000000000000000000000000000000000000070f1a2123273135393b3c3e3e3d3c3a37342a27211e160a02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e24394e63798d9a9d9e9e9e9e9e9e9e9e9e98826e59432e19001c32475c71869c9e9e9e9e9e9e9e9e9e9d998976614c36210c0000000000000000000000040a0c13171f212526272829292929292929292929292a2b3439464c534d483c2b1e0e000000000000000000000000000000000000000000000008141c2a34373937332a1e160a0000000000000005131a2832363837353025181103000000000000010f1a2124222018162b41566b8096a9a7a48e79644e3924101b22242220180d0000000000000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000000000000000000000000013293e53687e93a8b7a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b16000b20354b60758aa6b0b0b0b0b0b0b0b0b3b8b6ad98826d58432d1803000000000000000000000000000000000000000000060c0e151d202426272829282725221f18120b09030000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364a5b667c8488898989898989898989887b65503b25100013283e53687e8989898989898989898988837a645846331f0a000000000000000000000000000000040a0c0f11121313131313131313131313141518202933363d38352b1e0e0000000000000000000000000000000000000000000000081826303b474c4e4c473a32281a0a00000000000013233138454b4e4d4a43362e2111000000000008161f2d363937342b1c2a3f546a7f94a9c2a28d77624d38221f2d363937342b1d1204000000000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000000000000000000000000013293e53687e93a8c2a28c77624d37220d0000000000000000000a20354a5f758a9fb4ab95806b56402b1600081d31445574899ea1a1a1a1a1a1a1a1a1a1a59d917c67513c27120000000000000000000000000000000000000000000000000001080b0e111213141211100c0a0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071a2d3d4c5e666f7374747474747474747473655d4b37230e0011263a4e606873747474747474747474726e645c4a3a29170400000000000000000000000000000000000000000000000000000000000000000000050b171e21282320190e000000000000000000000000000000000000000000000001142636434b59626361584b4538281602000000000b1b31414d5660636260544b3f2e1c08000000051626343d4a4e4d483b30253d52687d92a7baa98b76614b362a343e4a4f4c483b2f2212000000000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000000000000000000000000013283e53687d93a9a7a48c77624d37220d0000000000000000000a1f354a5f748a9fa7ab95806b56402b160001142637576c818b8b8b8b8b8b8b8b8b8b8b8a877f72604a35200b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f1f2f404c515a5e5f5f5f5f5f5f5f5f5f5e504b3f2f1c08000b1f31424e535e5f5f5f5f5f5f5f5f5e5d594f4a3e2d1b0b00000000000000000000000000000000000000000000000000000000000000000000000000030a0c130d0b06000000000000000000000000000000000000000000000000081c30435460707778776e605645321e09000000031628394d5f6775787773655d4b37230e00000112233445515c6462594a43363b50667b90a5b49f89745746323a474c5c6462594c402f1c0c0000000000000000060707070707071a2f445a6f8499afa28c77624d37220d07070707070700000000000000000d22374c62778ca1b7a8937e69533e29140000000000000000000000000000000000000000000000000000000e24394e63798b9192908672604a35200b000000000000000000051a2f445a6f839092918d7c65503b2610000009293e51636c7676767676767676767676757269605443301c0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000112222f383b4548494949494949494949483b372f21110000021424313a3e49494949494949494949484439362d20100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354b6072848c8e8b8374604b36210b000000091e324657677d898d8c897b654f3a251000000a1d304151636c7977696054483b4f64798ea4b29d88725d39404c59616e7977665e4c3a29170400000000080d0f1b1c1c1c1c1c1c1c2f445a6f8499afa28c77624d37221c1c1c1c1c1c1c16140d04000000000d22374c62778ca1b7a8937e69533e29140000000000000000000000000000000000000000000000000000000c21364a5b63777c7d7b74605443301c07000000000000000000000b20354b60737a7d7c78655e4c38230e00000e223445515761616161616161616161616055544a433625130000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004121d24262f333434343434343434343325231c110300000006141f262834343434343434343434332e24221b1002000000000000000000000000000000000000000000000000000000000003090c12131313131313131313131313131313131313131313131313131313130e0c0700000000000c21364c61768a9fab9f937e68533828150200000c21364b61758a9ea8a7937e69543e291400001024394d5f6c818e8a7e7262594d4d62778ca2b09b86705b464b5e6677838e8a7c665847331f0a000002101b2225303131313131313131445a6f8499afa28c77624d3731313131313131312b282116080000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000000071a2d3d4a59626768656056453625130000000000000000000000081d31445560656867625a4c402f1c0900000516263439464b4c4c4c4c4c4c4c4c4c4c4b44373530251808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090f111a1e1f1f1f1f1f1f1f1f1f1e100e08000000000000020b11131e1f1f1f1f1f1f1f1f1f1d190f0d070000000000000000000000000000000000000000000000000000000000000b161e21282929292929292929292929292929292929292929292929292929292823211a0f010000000a1e33465770859bb0ae99846f5645321d09000011263c51667b91a8b7a68e79634e39240e000316283951677c919f9f938478675f4c60758ba8ae99846e5957616c7c8899a19e8976614c37210c000010202e373a464646464646464646465a6f8499afa28c77624d464646464646464646403d3326160000000d22374c62778ca1b7a8937e69533e2914000000000000000000000000000000000000000000000000000000000f1f2d3b484c5152504b4538281808000000000000000000000001152737444b5052524d483c2f21110000000008161b29323636363636363636363636353127201c1308000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b2832363d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e39362d1f0f00000003172939556b8095aab49f8975604b36200b00061a2c3d576c8197acb39d88735b4a36210c00091e32455771869cb1b4a29a897d6e615874899eac97826c5c647581909da6b3a7947f6a553f2a1500081b2e3f4b4f5b5c5c5c5c5c5c5c5c5c5c6f8499afa28c77625c5c5c5c5c5c5c5c5c5c555044331d0d00000d22374c62778ca1b7a8937e69533e291400000000000000000000000000000000020301000000000000000000010f1d2b34373c3d3b3632281a0a0000000000000000000000000009192731353b3d3c38352b1e11030000000000000b161e2121212121212121212121201d150b070000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010a10121a1b180e0c07000001080b151a1b170c0a0300000000000000010a10121a1b180e0c070000000000000000000000000000000000000000050b0d161e12100a010000000003162839464b52535353535353535353535353535353535353535353535353535353534e4a3d2d1a0a00000010253a4f657a8fa8b9a8907b65503b2610000c2135495b72879db2ad98826d583d2d1a07000b21364b60758ba1b0b4b4a79e9282766572879cab95806a6a7a87979fb3b8b4ab99836e59442e19000d22374b5d647071717171717171717171718499afa28c7871717171717171717171716b62503b2a1805000d22374c62778ca1b7a8937e69533e291400000000000000000000000000090f111718170f0d0700000000000000000d182022272826201d150a00000000000000000000000000000009151d202528272320190e000000000000000000030a0c0c0c0c0c0c0c0c0c0c0c0b080100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005131e25272f302e23211a0f09151d202a30302c211e170b000000000005131e25272f302e23211a0f0100000000000000000000000000000000060d1920222b3328251e1305000000091e324657616768686868686868686868686868686868686868686868686868686868635b4a3828160200000b20354b6075899eb3ab96816b563c2b19050e23384e63788da5b6ab927d67523d27120000091e3245576f83919ba2aeb3b3a098877b6d8291938d7b73808c9ca5b1b4a99f978d7d68523d2813000f253a4f647b8586868686868686868686868a9eb4b19c868686868686868686868686806b5948341f0b000d22374c62778ca1b7a8937e69533e2914000000000000000000000004121d24262d2e2c24221b100200000000000000050b0d1213100b0902000000000000000000000000000000000001080b1013120d0b060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000132330393c44454339362d1f19273135404545413633291b0b00000000132330393c44454339362d1f0f0000000000000000000000000000070e19212b343841483d393023130000000c21364b61757d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7d79635645321e090000081d3144556e8499aeb19c86715a4834200b16283854697e93a9b59f8b77624c37220d0000031628394a60727c858f99a1adb4a69d8c79757c7e7a6b80959faab3a89e968a8278685f4e3a2510001a2f44596f83999b9b9b9b9b9b9b9b9b9b9b9ea8b9b6a49c9b9b9b9b9b9b9b9b9b9b9b8c77624c37220d000d22374c62778ca1b7a8937e69533e2914000000000000000000000312222f383c42434139362d201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081830414d52595b584e4a3d2d2737444b555a5a564c46392917030000081830414d52595b584e4a3d2d1a070000000000000000000000080f1a212c353c484d565d524d41301d0d0000172c41576c8192939393939393939393939393939393939393939393939393939393938974604b36210b00000115273753697e93a8b6a48d77624d38220d1e3245566f8499afb19b86715947341f0b0000000a1c3043546066707a848e989faaa38e79636769646b8096aba69e948980776c635a4e41311e0b001c31465c71869bb1b1b1b1b1b1b1b1b1b1b1b4b9c6c2b6b1b1b1b1b1b1b1b1b1b1b1ab8e7a644f39240f000d22374c62778ca1b7a8937e69533e29140000000000000000000010212f404c515758564f4a3e2d1b0b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001325364d5f676f706d635b4a36314455606a6f706c615746331e0a00001325364d5f676f706d635b4a36210c00000000000000000009101b222d363c494d5a626b73675f4d3b2b1805001b31465b70869ba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a78e79634e39240e0000000e23384d63788da5b7a8937d685337271521364b60758a9fb4ab96806b563b2a180500000000132536434a515d656f79828b969985715b52544f64798d9993887f766b62594d493c31231301001a30455a6f849aa9a0a0a0a0a0a0a0a0a0a0afb3bfb4a7a2a0a0a0a0a0a0a0a0a0a0a18d78624d38230d000d22374c62778ca1b7a8937e69533e2914000000000000000000081b2e3f4c5e666c6d6c645c4a3a29170400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071c304354677d84858279634e39354b60737f85858175614c36210c00071c304354677d84858279634e39230e0000000000000007111c232e373d4a4e5b636d7880887d67594834200b001b31465b70869ba8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a78e79634e39240e0000000c2135495b72879db2ae99836e5544311d263b50667b90a9baa9907b65503b2610000000000008182530353f4b4f5b636d78818378624d3d3e4a5c677d847e756a61584c483b352c1e1305000012273c52677d8a8a8a8a8a8a8a8a8a8a8a8a9aa1b3a7968d8a8a8a8a8a8a8a8a8a8a8a836f5a4835200b000d22374c62778ca1b7a8937e69533e29140000000000000000000e22374b5d667c8283817a645846331f0a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b20354a60728a999a98836e58433a50657a8f9a9a937d68533e2813000b20354a60738a999a98836e58432e19030000000008131c202f383f4b4f5c646e78828b969d8a77624d37220d00172c41576c8192939393939393939393939393939393939393939393939393939393938976604b36210b00000006192c3c576c8297acb39e8975604b35202c3c576c8196acb49f8a75604b36210b00000000000009151d2530353f4b505b636d70635b49362e3e4e6068706a61584d483b352c221b10020000001025394d5f67747575757575757575757573849aafa28d7875757575757575757575756f65543c2b1906000d22374c62778ca1b7a8937e69533e291400000000000000000010253a4f657a8f9798968b76614c36210c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b21364b60768ba9af9a846f5a453c51667b91a6a9947f69543f2a14000b21364b60768ba9af9a846f5a452f1a050000000e18253035404c505d646f79838c979faaa995806b55402b16000c21364b61757d7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e7e79635645321e090000000012273c51677c91aab9a88f7a65503a2535495a72879cb2af9a846f5645321e0900000000000919273136434a515d656f79828579635443404a5c687e857f766b62594e493d362e20140600000a1e30414d5460606060606060606060606f8499afa28c776260606060606060606060555447371e0e00000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7ada98d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c22374c61778ca1b09a85705b453c52677c91a7aa957f6a55402a15000c22374c61778ca1b09a85705b45301b0600000e1e2b36434a515e66707a848e989fabb4ab9f96806b56412b16000a1e324657616869696969696969696969696969696969696969696969696969696969635b4a38281602000000000c21364c61768b9fb4ab95806b563c2b384d63788da5b6a9947f6954382816020000000002152737444b546066707a848e979a867360535550647a8f9b948981776d635b4f4a3e31241402000113233036434a4b4b4b4b4b4b4b4b4b5a6f8499afa28c77624d4b4b4b4b4b4b4b4b4b44373729190000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7c7a38d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d22384d62778da2b09b86715b463d52687d92a7ab95806b56402b16000d22384d62778da2b09b86715b46311c060005192b3c48546067717b858f99a1adb4b1a59d8d8073604b36200b0003162939464b52535353535353535353535353535353535353535353535353535353534e4a3d2d1a0a00000000000a1f33465870859bb0b19b86715a48353953687e93a8b7a68e79644e39240f0000000000081d3144556068737c858f99a1ada48e7964686a656c8196aba89e968b82796e645c4e42311f0b00000513182530353535353535353535445a6f8499afa28c77624d373535353535353535312619190b0000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7b8a38d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e23384e63788da3b19c87725c473e53687e93a8ab96816c56412c17000e23384e63788da3b19c87725c47321d07000b2035485a62727c85909aa2aeb3b8b39f97877b6b605544311d0800000b1b2932363d3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e3e39362d1f0f0000000000000417293a556a8095aab5a38d78624d3746576e8399aeb39d88735c4a36210d00000000031628394b60747d86919ba3afb5a49c8b78767e807b6a80939fa9b4a99f978c837a68604e3b26110000000008131c20202020202020202f445a6f8499afa28c77624d3722202020202020201d140900000000000d22374c62778ca1b7a8937e69533e291400000000000000000012283d52677d92a7b8a38d78634e38230e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f24394e64798ea3b29d88725d483f54697e94a9ac97826d57422d18000f24394e64798ea3b29d88725d48331d08000d22384d627886919ba3afb4bfb2a69d908275655d4b44372715020000000b161e21282929292929292929292929292929292929292929292929292929292924211a0f01000000000000000f243a4f64798fa5b7a9947f6955444c61768a9fb4ac97826d573d2d1a0700000000091e3245577084929ca4b0b4ab9f96867a6e839395907c727e8a9ba3b4b4ab9f998f7e68533e2913000000000000070b0b0b0b0b0b0b1a2f445a6f8499afa28c77624d37220d0b0b0b0b0b0b08010000000000000c21374c61768cabbca8937e69533e29150c0a0400050001080b12283d52677d92a7c5a28d77624d38220d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f253a4f647a8fa4b39e88735e4940556a7f95aaad98836d58432e18000f253a4f647a8fa4b39e88735e49331e0000152a3f556a7f94a4b0b5c1b9b3a098887c6d61574b3f312719090000000000030a0c13141414141414141414141414141414141414141414141414141414140e0c070000000000000000000b20354a6073879db2b19c867360555c697e94a9b8a6907b66513b261100000000000b21364b60758a9fb1b6b1a59d8d81746472879daa95806b697985959faab6b4ae98836e59432e1900000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000b20364b60758a9fb4aa95806a55413228211f171b1b1b141d2024303e54697e93a9b8a68b75604b36200b0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010253b50657a90a5b49e89745f3840566b8095abae99836e59442e190010253b50657a90a5b49e89745f382815020013293e53687e93a9bac0b3a79e928376665e4b46392e1d1509000000000008131c202425252525252525252525252525252525252525252525252525252524211f170b0000000000000000071c3043546b8096abb6a495807470727a899eb3b39e8874604b35200b0000000000091e32455771869bb1b3a097877b6b605674899eac97826d5b63737f8c9ca4b5a6947f69543f2a1400000000000000000000000000051a2f445a6f8499afa28c77624d37220d0000000000000000000000000000081d31445572879db2b09a85705f4b453837332931303026313539404c5c6e8398aeb39e88735645321d090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011263b51667b90a6b49f8a75564541566c8196abaf99846f5a442f1a0011263b51667b90a6b49f8a755645321d09000c22374c61778a9fb4b4a29a897d6e61584c4033291b110200000000000818253035393a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3633291b0b00000000000000001325364e63798c9fb5b09e958886878d9ea7b9a996806b5544311d0800000000000316283951667c909f9e918276655d4b60758ba8ae99846f5955606a7a86969f9d8875614b36210c00000000000000000000000000051a2f445a6f8499afa28c77624d37220d000000000000000000000000000002152737576d8297acb4a2927d6a6056504c473a46454537444b4e535e667a8c9fb4ad98826d58382815020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012273c51677c91a6bcab8b75604b42576c8297acaf9a85705a45301b0012273c51677c91a6bcab8b75604b36200b000b1f3447596b8095a29f938478675f4c473a2f1e170b00000000000000132536434a4e4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4c463a29180800000000000000082135495b6e8399a6b6b0a79e9b9c9fabb9b49f8a77624d372715010000000000000a24384c5e6a808b887c6d61574b4d62778ca2b09b86705b444b5c6474818b897b655746321e0a00000000000000000000000000051a2f445a6f8499afa28c77624d37220d00000000000000000000000000000010253a4f657a8fa1b3b49f8c80756c6661585c5b5a5b5b55606369717c899eaab4a2907b66513b2611000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012283d52677d92a7b6a18c76614c43586d8298adb09b86705b46311b0012283d52677d92a7b6a18c76614c37210c0004182a3b4b607384918a7e7262594d41332a1c120300000000000000071c30435460636464646464646464646464646464646464646464646464646464646461584636261401000000000000061a2c3d4d6277889ca4aeb2b3b0b1b4b1aa9f937e68594834190900000000000000091c2f4050616a7876665e4c46394f64798ea4b29d88725d393e4a56606c7876655d4b3929160300000000000000000000000000051a2f445a6f8499afa28c77624d37220d0000000000000000000000000000000e22374b5d6f8399a6b6aa9f9588817b767471707070717275797e85919ea7b8a89a8472604a35200b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013283e53687d93a8b7a28c77624d43596e8398aeb19c87715c47321c0013283e53687d93a8b7a28c77624d37220d00000c1d31445560747b78686054483b301f180c0000000000000000000b20354a6072797a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a7976615443301c08000000000000000f2034485963798692999da6a0a89e9b968b7f69604e3b2b1800000000000000000012223343505a6261574c40333b50667b90a5b49f897457463238454b5a6261584b3f2e1b0b0000000000000000000000000000051a2f445a6f8499a8a18c77624c37220d000000000000000000000000000000081b2e3f4c6277889da5b4b4a79e96908c898786858586878a8e939ba3b3b3a69e8a79635443301c07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014293e54697e93a9b8a28d78634d445a6f8499afb29d87725d48321d0014293e54697e93a9b8a28d78634d38230e00000215273745566066625a4a43362b1d130400000000000000000000152a3f556a7f8e8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8772604b35200b0000000000000005182b3b495b63747d84888a8b8b8986807869614f42311d0d000000000000000000041525333c484d4b463930283d52687d92a7baa98b76614b3628323c484d4c463a2e21100000000000000000000000000000000012283d52677d8a8c8b836f594834200b00000000000000000000000000000000101f344859637987979faab3b3aba5a79e9c9b9a9a9b9d9faaa8b0b4aea199887a645b49362513000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f94aab8a38e79634e455a70859aafb39d88735e48331e00152a3f556a7f94aab8a38e79634e39240e00000009192738454b514d483c3025180d0000000000000000000000001b30465b70859ba4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a4a58e79634e39230e00000000000000000d1d2c3d495660686f7375767574716b635a4f43322414000000000000000000000007151e2b35383632291b2a3f556a7f94aac1a28d77624d38221e2b35383633291b10030000000000000000000000000000000010253a4d5f677577766f65543b2b18050000000000000000000000000000000005182a3b495b6376818b979ea6aaadb1b3b1b0afb0b0b2b2afaba99f99908478645c4a3c2c1808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000162b40566b8095abb2a48f7a644f465b71869bb0b29e89745e49341f00162b40566b8095abb2a48f7a644f3a250f000000000a1a2731363c38352b1c1308000000000000000000000000001c31465b71869bacacacacacacacacacacacacacacacacacacacacacacacacacacacaa8e79644e39240f0000000000000000000f1f2c38454b535954606160565c564d493c32241406000000000000000000000000000e192022211e16162b41566b8096a8a6a38e79644e39240f192022211f170b0000000000000000000000000000000000000a1e30414d55606261575447371d0d0000000000000000000000000000000000000d1d2c3c4958616c7881888f94989b9e9faaa1a1a89f9d9996928a847b6f635a4a3e2d1e0e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000152a3f556a7f949c9d9b8e79634e455a7084999c9c9988735d48331e00152a3f556a7f949c9d9b8e79634e39240e00000000000a151d20262220190e000000000000000000000000000000182e43586d8296979797979797979797979797979797979797979797979797979797978b76614c36210c000000000000000000010f1a2832363d36434b4b4b45384138352c1e1406000000000000000000000000000000050b0d0c0a0310253a4f657b8990918e8574604b36200b050b0d0c0a04000000000000000000000000000000000000000113233037444b4c4b463937291900000000000000000000000000000000000000000e1e2c3a464c5a636c747a7f8386898a8b8c8b8a898884817d766f665e4d493c2d201000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c21364c6176818687857e685b4a394e6379838787847a65503a2510000c21364c6176818687857e685b4a36210c00000000000002090b110d0b05000000000000000000000000000000000d22384d627881828282828282828282828282828282828282828282828282828282827c675846331f0a00000000000000000000000a151d2028263035363631272b2320190e00000000000000000000000000000000000000000000000e22374b5d65757a7c7970605645311d090000000000000000000000000000000000000000000000000000051319273136373633291b190b0000000000000000000000000000000000000000000e1c29333c494d5560656a6d7173757676767574726f6b676158504c40352c1e100200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a1f334658616c71727068604e3d364a5b636e72726f655d4b37230e000a1f334658616c71727068604e3d2d1a0700000000000000000000000000000000000000000000000000000000000b2035485a626c6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d675f4d3a29170400000000000000000000000002090b13141c2021201d15160e0c06000000000000000000000000000000000000000000000000081b2e3f4b57606566645c4b45382715020000000000000000000000000000000000000000000000000000000009151d2022211e170b0000000000000000000000000000000000000000000000000c171f2c3537444b5055585c5e5660616160545d5a56524c463a382f20190e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000417293a464c575c5d5b534e42312d3d4a4e595c5d5a504b3f2e1c08000417293a464c575c5d5b534e42311f0f00000000000000000000000000000000000000000000000000000000000005192b3c484d5657575757575757575757575757575757575757575757575757575757514d40301b0b000000000000000000000000000000000001080b0c0b0902000000000000000000000000000000000000000000000000000000000010212e39454b50514e4a3e31271a0a00000000000000000000000000000000000000000000000000000000000002080b0d0c0a030000000000000000000000000000000000000000000000000000040e19202631353a3f434638454b4c4c4b434844413d363329231c11060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b1b293336424748463e3b31241f2d3639444747443a372e21110000000b1b293336424748463e3b31241401000000000000000000000000000000000000000000000000000000000000000e1e2b353841424242424242424242424242424242424242424242424242424242423c3930221200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003101b2832363b3c39362d1d150a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000609141d20252a2e3128323637363530262f2c27211f170c090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b171f212c31323029261f140f1a21242e32322f25231c1103000000000b171f212c31323029261f14060000000000000000000000000000000000000000000000000000000000000000000e1920222c2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d27241d120400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a161e21252724211a0f0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001080b1015181c161e212121201c141a16120c0a04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040a0c171c1d1b13110b0200070c0e191d1d1a100e0800000000000000040a0c171c1d1b13110b020000000000000000000000000000000000000000000000000000000000000000000000050b0d171818181818181818181818181818181818181818181818181818181812100a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003090b10110f0d0700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030002090b0c0c0b080100010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+ m_StreamData:
+ serializedVersion: 2
+ offset: 0
+ size: 0
+ path:
+--- !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: Offside-Regular SDF
+ m_EditorClassIdentifier:
+ hashCode: 1336867890
+ material: {fileID: 1503351390517901866}
+ materialHashCode: 1160494802
+ m_Version: 1.1.0
+ m_SourceFontFileGUID: 87687f5b615890049906aa04744d5345
+ m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 87687f5b615890049906aa04744d5345, type: 3}
+ m_SourceFontFile: {fileID: 0}
+ m_AtlasPopulationMode: 0
+ m_FaceInfo:
+ m_FaceIndex: 0
+ m_FamilyName: Offside
+ m_StyleName: Regular
+ m_PointSize: 69
+ m_Scale: 1
+ m_UnitsPerEM: 1000
+ m_LineHeight: 87.008995
+ m_AscentLine: 68.724
+ m_CapLine: 52
+ m_MeanLine: 42
+ m_Baseline: 0
+ m_DescentLine: -18.285
+ m_SuperscriptOffset: 68.724
+ m_SuperscriptSize: 0.5
+ m_SubscriptOffset: -18.285
+ m_SubscriptSize: 0.5
+ m_UnderlineOffset: -8.625
+ m_UnderlineThickness: 3.4499998
+ m_StrikethroughOffset: 16.8
+ m_StrikethroughThickness: 3.4499998
+ m_TabWidth: 26
+ m_GlyphTable:
+ - m_Index: 1
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 52.4375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 47.125
+ m_GlyphRect:
+ m_X: 254
+ m_Y: 361
+ m_Width: 33
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 14
+ m_Metrics:
+ m_Width: 30.90625
+ m_Height: 52.4375
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 43.328125
+ m_GlyphRect:
+ m_X: 261
+ m_Y: 203
+ m_Width: 32
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 15
+ m_Metrics:
+ m_Width: 31.25
+ m_Height: 53.125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 43.671875
+ m_GlyphRect:
+ m_X: 246
+ m_Y: 451
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 21
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 51.0625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 47.125
+ m_GlyphRect:
+ m_X: 429
+ m_Y: 234
+ m_Width: 33
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 25
+ m_Metrics:
+ m_Width: 30.5625
+ m_Height: 53.125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 41.609375
+ m_GlyphRect:
+ m_X: 169
+ m_Y: 230
+ m_Width: 32
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 35
+ m_Metrics:
+ m_Width: 25.53125
+ m_Height: 51.40625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 33.8125
+ m_GlyphRect:
+ m_X: 392
+ m_Y: 70
+ m_Width: 27
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 36
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 53.125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 151
+ m_Y: 141
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 41
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 51.75
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 47.125
+ m_GlyphRect:
+ m_X: 298
+ m_Y: 332
+ m_Width: 33
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 44
+ m_Metrics:
+ m_Width: 5.515625
+ m_Height: 51.75
+ m_HorizontalBearingX: 8.28125
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 22.078125
+ m_GlyphRect:
+ m_X: 500
+ m_Y: 6
+ m_Width: 6
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 55
+ m_Metrics:
+ m_Width: 26.421875
+ m_Height: 52.4375
+ m_HorizontalBearingX: 0.6875
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 34.703125
+ m_GlyphRect:
+ m_X: 314
+ m_Y: 6
+ m_Width: 28
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 57
+ m_Metrics:
+ m_Width: 30.5625
+ m_Height: 51.75
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 42.359375
+ m_GlyphRect:
+ m_X: 350
+ m_Y: 200
+ m_Width: 32
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 59
+ m_Metrics:
+ m_Width: 23.453125
+ m_Height: 51.40625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 31.734375
+ m_GlyphRect:
+ m_X: 393
+ m_Y: 199
+ m_Width: 25
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 65
+ m_Metrics:
+ m_Width: 43.75
+ m_Height: 51.40625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 58.921875
+ m_GlyphRect:
+ m_X: 278
+ m_Y: 268
+ m_Width: 45
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 66
+ m_Metrics:
+ m_Width: 34.015625
+ m_Height: 51.40625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 49.203125
+ m_GlyphRect:
+ m_X: 326
+ m_Y: 136
+ m_Width: 35
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 72
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 53.125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 45.75
+ m_GlyphRect:
+ m_X: 195
+ m_Y: 141
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 84
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 52.4375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 42.296875
+ m_GlyphRect:
+ m_X: 304
+ m_Y: 71
+ m_Width: 31
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 86
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 60.171875
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 45.75
+ m_GlyphRect:
+ m_X: 77
+ m_Y: 333
+ m_Width: 33
+ m_Height: 62
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 87
+ m_Metrics:
+ m_Width: 31.390625
+ m_Height: 52.4375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 44.4375
+ m_GlyphRect:
+ m_X: 283
+ m_Y: 137
+ m_Width: 32
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 91
+ m_Metrics:
+ m_Width: 31.53125
+ m_Height: 53.125
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 42.578125
+ m_GlyphRect:
+ m_X: 216
+ m_Y: 72
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 97
+ m_Metrics:
+ m_Width: 31.75
+ m_Height: 51.40625
+ m_HorizontalBearingX: 1.375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 34.5
+ m_GlyphRect:
+ m_X: 334
+ m_Y: 266
+ m_Width: 33
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 102
+ m_Metrics:
+ m_Width: 31.9375
+ m_Height: 52.4375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 47.125
+ m_GlyphRect:
+ m_X: 290
+ m_Y: 426
+ m_Width: 33
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 113
+ m_Metrics:
+ m_Width: 37.1875
+ m_Height: 52.4375
+ m_HorizontalBearingX: 3.3125
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 43.890625
+ m_GlyphRect:
+ m_X: 212
+ m_Y: 207
+ m_Width: 38
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 114
+ m_Metrics:
+ m_Width: 58.3125
+ m_Height: 52.4375
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 67.890625
+ m_GlyphRect:
+ m_X: 207
+ m_Y: 296
+ m_Width: 60
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 119
+ m_Metrics:
+ m_Width: 34.015625
+ m_Height: 51.75
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 42.09375
+ m_GlyphRect:
+ m_X: 346
+ m_Y: 71
+ m_Width: 35
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 120
+ m_Metrics:
+ m_Width: 34.015625
+ m_Height: 51.75
+ m_HorizontalBearingX: 2.96875
+ m_HorizontalBearingY: 51.40625
+ m_HorizontalAdvance: 40.015625
+ m_GlyphRect:
+ m_X: 353
+ m_Y: 6
+ m_Width: 35
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 125
+ m_Metrics:
+ m_Width: 32.84375
+ m_Height: 51.0625
+ m_HorizontalBearingX: 4.140625
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.0625
+ m_GlyphRect:
+ m_X: 473
+ m_Y: 239
+ m_Width: 33
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 140
+ m_Metrics:
+ m_Width: 30.578125
+ m_Height: 42.09375
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 41.40625
+ m_HorizontalAdvance: 41.609375
+ m_GlyphRect:
+ m_X: 429
+ m_Y: 297
+ m_Width: 32
+ m_Height: 43
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 153
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 56.234375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 127
+ m_Y: 6
+ m_Width: 31
+ m_Height: 58
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 154
+ m_Metrics:
+ m_Width: 28.703125
+ m_Height: 43.46875
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 41.125
+ m_GlyphRect:
+ m_X: 373
+ m_Y: 427
+ m_Width: 30
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 160
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 56.234375
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 121
+ m_Y: 318
+ m_Width: 31
+ m_Height: 58
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 164
+ m_Metrics:
+ m_Width: 30.21875
+ m_Height: 43.46875
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 44.015625
+ m_GlyphRect:
+ m_X: 474
+ m_Y: 183
+ m_Width: 32
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 174
+ m_Metrics:
+ m_Width: 24.21875
+ m_Height: 73.484375
+ m_HorizontalBearingX: 4.140625
+ m_HorizontalBearingY: 56.234375
+ m_HorizontalAdvance: 26.5625
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 6
+ m_Width: 25
+ m_Height: 75
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 175
+ m_Metrics:
+ m_Width: 36.15625
+ m_Height: 60.71875
+ m_HorizontalBearingX: 6.203125
+ m_HorizontalBearingY: 43.46875
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 58
+ m_Y: 412
+ m_Width: 37
+ m_Height: 62
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 180
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 55.546875
+ m_HorizontalBearingX: 8.28125
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 45.75
+ m_GlyphRect:
+ m_X: 168
+ m_Y: 403
+ m_Width: 31
+ m_Height: 57
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 183
+ m_Metrics:
+ m_Width: 7.875
+ m_Height: 57.265625
+ m_HorizontalBearingX: 7.3125
+ m_HorizontalBearingY: 56.578125
+ m_HorizontalAdvance: 20.703125
+ m_GlyphRect:
+ m_X: 148
+ m_Y: 404
+ m_Width: 9
+ m_Height: 58
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 195
+ m_Metrics:
+ m_Width: 18.21875
+ m_Height: 73.828125
+ m_HorizontalBearingX: -4.90625
+ m_HorizontalBearingY: 56.578125
+ m_HorizontalAdvance: 20.703125
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 92
+ m_Width: 19
+ m_Height: 75
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 198
+ m_Metrics:
+ m_Width: 29.671875
+ m_Height: 55.546875
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 40.296875
+ m_GlyphRect:
+ m_X: 127
+ m_Y: 231
+ m_Width: 31
+ m_Height: 57
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 201
+ m_Metrics:
+ m_Width: 7.59375
+ m_Height: 55.890625
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 20.703125
+ m_GlyphRect:
+ m_X: 131
+ m_Y: 154
+ m_Width: 9
+ m_Height: 57
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 207
+ m_Metrics:
+ m_Width: 51.46875
+ m_Height: 42.78125
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 66.65625
+ m_GlyphRect:
+ m_X: 432
+ m_Y: 61
+ m_Width: 53
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 208
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 42.78125
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 45.0625
+ m_GlyphRect:
+ m_X: 420
+ m_Y: 351
+ m_Width: 31
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 215
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 43.46875
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 43.671875
+ m_GlyphRect:
+ m_X: 475
+ m_Y: 127
+ m_Width: 31
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 227
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 60.03125
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 106
+ m_Y: 406
+ m_Width: 31
+ m_Height: 61
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 229
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 60.03125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 44.359375
+ m_GlyphRect:
+ m_X: 85
+ m_Y: 246
+ m_Width: 31
+ m_Height: 61
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 230
+ m_Metrics:
+ m_Width: 23.875
+ m_Height: 43.46875
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 32.84375
+ m_GlyphRect:
+ m_X: 393
+ m_Y: 262
+ m_Width: 25
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 234
+ m_Metrics:
+ m_Width: 29.8125
+ m_Height: 43.46875
+ m_HorizontalBearingX: 6.203125
+ m_HorizontalBearingY: 42.4375
+ m_HorizontalAdvance: 42.234375
+ m_GlyphRect:
+ m_X: 378
+ m_Y: 318
+ m_Width: 31
+ m_Height: 45
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 241
+ m_Metrics:
+ m_Width: 21.046875
+ m_Height: 51.75
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 26.5625
+ m_GlyphRect:
+ m_X: 399
+ m_Y: 6
+ m_Width: 22
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 246
+ m_Metrics:
+ m_Width: 29.875
+ m_Height: 42.78125
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 41.75
+ m_HorizontalAdvance: 45.0625
+ m_GlyphRect:
+ m_X: 462
+ m_Y: 356
+ m_Width: 31
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 257
+ m_Metrics:
+ m_Width: 32.640625
+ m_Height: 42.78125
+ m_HorizontalBearingX: 4.6875
+ m_HorizontalBearingY: 41.75
+ m_HorizontalAdvance: 42.09375
+ m_GlyphRect:
+ m_X: 430
+ m_Y: 116
+ m_Width: 34
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 258
+ m_Metrics:
+ m_Width: 55.265625
+ m_Height: 42.78125
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 41.75
+ m_HorizontalAdvance: 64.921875
+ m_GlyphRect:
+ m_X: 432
+ m_Y: 6
+ m_Width: 57
+ m_Height: 44
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 263
+ m_Metrics:
+ m_Width: 30.5625
+ m_Height: 42.09375
+ m_HorizontalBearingX: 5.734375
+ m_HorizontalBearingY: 41.75
+ m_HorizontalAdvance: 42.09375
+ m_GlyphRect:
+ m_X: 472
+ m_Y: 302
+ m_Width: 32
+ m_Height: 43
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 264
+ m_Metrics:
+ m_Width: 32.640625
+ m_Height: 59
+ m_HorizontalBearingX: 4.6875
+ m_HorizontalBearingY: 41.75
+ m_HorizontalAdvance: 42.09375
+ m_GlyphRect:
+ m_X: 86
+ m_Y: 160
+ m_Width: 34
+ m_Height: 60
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 269
+ m_Metrics:
+ m_Width: 29.1875
+ m_Height: 41.40625
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 41.40625
+ m_HorizontalAdvance: 39.53125
+ m_GlyphRect:
+ m_X: 342
+ m_Y: 374
+ m_Width: 31
+ m_Height: 42
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 281
+ m_Metrics:
+ m_Width: 31.953125
+ m_Height: 53.125
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 163
+ m_Y: 299
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 282
+ m_Metrics:
+ m_Width: 26.21875
+ m_Height: 51.0625
+ m_HorizontalBearingX: 8.96875
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 334
+ m_Y: 427
+ m_Width: 28
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 283
+ m_Metrics:
+ m_Width: 31.953125
+ m_Height: 51.0625
+ m_HorizontalBearingX: 4.140625
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 430
+ m_Y: 171
+ m_Width: 33
+ m_Height: 52
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 284
+ m_Metrics:
+ m_Width: 31.53125
+ m_Height: 52.09375
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 239
+ m_Y: 138
+ m_Width: 33
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 285
+ m_Metrics:
+ m_Width: 34.359375
+ m_Height: 52.09375
+ m_HorizontalBearingX: 3.109375
+ m_HorizontalBearingY: 51.75
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 304
+ m_Y: 202
+ m_Width: 35
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 286
+ m_Metrics:
+ m_Width: 31.53125
+ m_Height: 52.09375
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 260
+ m_Y: 72
+ m_Width: 33
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 287
+ m_Metrics:
+ m_Width: 31.53125
+ m_Height: 52.09375
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 270
+ m_Y: 6
+ m_Width: 33
+ m_Height: 54
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 288
+ m_Metrics:
+ m_Width: 29.1875
+ m_Height: 51.75
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 372
+ m_Y: 135
+ m_Width: 30
+ m_Height: 53
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 289
+ m_Metrics:
+ m_Width: 32.640625
+ m_Height: 53.125
+ m_HorizontalBearingX: 4.34375
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 210
+ m_Y: 385
+ m_Width: 33
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 290
+ m_Metrics:
+ m_Width: 31.53125
+ m_Height: 53.125
+ m_HorizontalBearingX: 4.34375
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 227
+ m_Y: 6
+ m_Width: 32
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 308
+ m_Metrics:
+ m_Width: 0
+ m_Height: 0
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 0
+ m_HorizontalAdvance: 25.53125
+ 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: 309
+ m_Metrics:
+ m_Width: 0
+ m_Height: 0
+ m_HorizontalBearingX: 0
+ m_HorizontalBearingY: 0
+ m_HorizontalAdvance: 25.53125
+ 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: 310
+ m_Metrics:
+ m_Width: 5.859375
+ m_Height: 9.171875
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 8.140625
+ m_HorizontalAdvance: 13.875
+ m_GlyphRect:
+ m_X: 163
+ m_Y: 365
+ m_Width: 6
+ m_Height: 11
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 311
+ m_Metrics:
+ m_Width: 5.859375
+ m_Height: 17.3125
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 8.140625
+ m_HorizontalAdvance: 13.875
+ m_GlyphRect:
+ m_X: 298
+ m_Y: 396
+ m_Width: 6
+ m_Height: 19
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 312
+ m_Metrics:
+ m_Width: 5.859375
+ m_Height: 36.765625
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 35.734375
+ m_HorizontalAdvance: 13.875
+ m_GlyphRect:
+ m_X: 413
+ m_Y: 134
+ m_Width: 6
+ m_Height: 38
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 313
+ m_Metrics:
+ m_Width: 5.859375
+ m_Height: 44.90625
+ m_HorizontalBearingX: 4
+ m_HorizontalBearingY: 35.734375
+ m_HorizontalAdvance: 13.875
+ m_GlyphRect:
+ m_X: 496
+ m_Y: 70
+ m_Width: 6
+ m_Height: 46
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 314
+ m_Metrics:
+ m_Width: 34.703125
+ m_Height: 10.828125
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 9.796875
+ m_HorizontalAdvance: 41.609375
+ m_GlyphRect:
+ m_X: 151
+ m_Y: 207
+ m_Width: 36
+ m_Height: 12
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 315
+ m_Metrics:
+ m_Width: 6.890625
+ m_Height: 57.265625
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 56.234375
+ m_HorizontalAdvance: 20.765625
+ m_GlyphRect:
+ m_X: 108
+ m_Y: 6
+ m_Width: 8
+ m_Height: 59
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 317
+ m_Metrics:
+ m_Width: 27.390625
+ m_Height: 57.265625
+ m_HorizontalBearingX: 1.375
+ m_HorizontalBearingY: 56.234375
+ m_HorizontalAdvance: 32.21875
+ m_GlyphRect:
+ m_X: 105
+ m_Y: 84
+ m_Width: 28
+ m_Height: 59
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 321
+ m_Metrics:
+ m_Width: 28.828125
+ m_Height: 31.75
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 55.34375
+ m_HorizontalAdvance: 42.640625
+ m_GlyphRect:
+ m_X: 162
+ m_Y: 473
+ m_Width: 30
+ m_Height: 33
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 322
+ m_Metrics:
+ m_Width: 45.671875
+ m_Height: 53.125
+ m_HorizontalBearingX: -2.140625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 169
+ m_Y: 6
+ m_Width: 47
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 323
+ m_Metrics:
+ m_Width: 21.875
+ m_Height: 65.5625
+ m_HorizontalBearingX: 2.0625
+ m_HorizontalBearingY: 58.3125
+ m_HorizontalAdvance: 26.015625
+ m_GlyphRect:
+ m_X: 42
+ m_Y: 6
+ m_Width: 22
+ m_Height: 67
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 324
+ m_Metrics:
+ m_Width: 21.875
+ m_Height: 65.5625
+ m_HorizontalBearingX: 2.0625
+ m_HorizontalBearingY: 58.3125
+ m_HorizontalAdvance: 26.015625
+ m_GlyphRect:
+ m_X: 75
+ m_Y: 6
+ m_Width: 22
+ m_Height: 67
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 325
+ m_Metrics:
+ m_Width: 25.1875
+ m_Height: 4.828125
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 24.765625
+ m_HorizontalAdvance: 32.078125
+ m_GlyphRect:
+ m_X: 121
+ m_Y: 387
+ m_Width: 26
+ m_Height: 6
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 328
+ m_Metrics:
+ m_Width: 32.078125
+ m_Height: 4.828125
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 0
+ m_HorizontalAdvance: 38.984375
+ m_GlyphRect:
+ m_X: 158
+ m_Y: 387
+ m_Width: 33
+ m_Height: 5
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 329
+ m_Metrics:
+ m_Width: 14.484375
+ m_Height: 64.859375
+ m_HorizontalBearingX: 8.28125
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 60
+ m_Y: 170
+ m_Width: 15
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 330
+ m_Metrics:
+ m_Width: 14.5
+ m_Height: 64.859375
+ m_HorizontalBearingX: 2.0625
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 79
+ m_Y: 84
+ m_Width: 15
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 331
+ m_Metrics:
+ m_Width: 19.25
+ m_Height: 64.859375
+ m_HorizontalBearingX: 3.515625
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 23
+ m_Y: 257
+ m_Width: 20
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 332
+ m_Metrics:
+ m_Width: 19.265625
+ m_Height: 64.859375
+ m_HorizontalBearingX: 2.0625
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 54
+ m_Y: 257
+ m_Width: 20
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 333
+ m_Metrics:
+ m_Width: 14.484375
+ m_Height: 64.859375
+ m_HorizontalBearingX: 8.28125
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 412
+ m_Width: 15
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 334
+ m_Metrics:
+ m_Width: 14.5
+ m_Height: 64.859375
+ m_HorizontalBearingX: 2.0625
+ m_HorizontalBearingY: 57.953125
+ m_HorizontalAdvance: 24.84375
+ m_GlyphRect:
+ m_X: 32
+ m_Y: 412
+ m_Width: 15
+ m_Height: 65
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 345
+ m_Metrics:
+ m_Width: 17.515625
+ m_Height: 17.671875
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 53.890625
+ m_HorizontalAdvance: 24.421875
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 488
+ m_Width: 18
+ m_Height: 18
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 346
+ m_Metrics:
+ m_Width: 5.796875
+ m_Height: 17.671875
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 53.890625
+ m_HorizontalAdvance: 12.703125
+ m_GlyphRect:
+ m_X: 35
+ m_Y: 488
+ m_Width: 7
+ m_Height: 18
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 349
+ m_Metrics:
+ m_Width: 59.40625
+ m_Height: 64.9375
+ m_HorizontalBearingX: 7.59375
+ m_HorizontalBearingY: 55.203125
+ m_HorizontalAdvance: 74.59375
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 335
+ m_Width: 60
+ m_Height: 66
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 350
+ m_Metrics:
+ m_Width: 41.59375
+ m_Height: 66.578125
+ m_HorizontalBearingX: 6.90625
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 48.5
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 178
+ m_Width: 43
+ m_Height: 68
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 357
+ m_Metrics:
+ m_Width: 4.96875
+ m_Height: 65.5625
+ m_HorizontalBearingX: 8.5625
+ m_HorizontalBearingY: 58.3125
+ m_HorizontalAdvance: 22.078125
+ m_GlyphRect:
+ m_X: 6
+ m_Y: 257
+ m_Width: 6
+ m_Height: 67
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 365
+ m_Metrics:
+ m_Width: 30.578125
+ m_Height: 65.5625
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 58.3125
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 36
+ m_Y: 92
+ m_Width: 32
+ m_Height: 67
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 371
+ m_Metrics:
+ m_Width: 31.046875
+ m_Height: 31.046875
+ m_HorizontalBearingX: 5.171875
+ m_HorizontalBearingY: 41.125
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 203
+ m_Y: 471
+ m_Width: 32
+ m_Height: 32
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 375
+ m_Metrics:
+ m_Width: 31.046875
+ m_Height: 20.015625
+ m_HorizontalBearingX: 5.171875
+ m_HorizontalBearingY: 35.609375
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 81
+ m_Y: 485
+ m_Width: 32
+ m_Height: 21
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 377
+ m_Metrics:
+ m_Width: 30.359375
+ m_Height: 29.53125
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 40.296875
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 456
+ m_Y: 411
+ m_Width: 31
+ m_Height: 31
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 378
+ m_Metrics:
+ m_Width: 30.359375
+ m_Height: 29.53125
+ m_HorizontalBearingX: 5.515625
+ m_HorizontalBearingY: 40.296875
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 414
+ m_Y: 406
+ m_Width: 31
+ m_Height: 31
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 383
+ m_Metrics:
+ m_Width: 31.046875
+ m_Height: 8.703125
+ m_HorizontalBearingX: 5.171875
+ m_HorizontalBearingY: 29.953125
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 180
+ m_Y: 365
+ m_Width: 32
+ m_Height: 9
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 385
+ m_Metrics:
+ m_Width: 25.671875
+ m_Height: 23.25
+ m_HorizontalBearingX: 7.859375
+ m_HorizontalBearingY: 51.0625
+ m_HorizontalAdvance: 41.40625
+ m_GlyphRect:
+ m_X: 124
+ m_Y: 478
+ m_Width: 27
+ m_Height: 25
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 395
+ m_Metrics:
+ m_Width: 60.171875
+ m_Height: 53.125
+ m_HorizontalBearingX: 4.828125
+ m_HorizontalBearingY: 52.09375
+ m_HorizontalAdvance: 69.765625
+ m_GlyphRect:
+ m_X: 144
+ m_Y: 75
+ m_Width: 61
+ m_Height: 55
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ - m_Index: 427
+ m_Metrics:
+ m_Width: 16.21875
+ m_Height: 12.359375
+ m_HorizontalBearingX: 3.453125
+ m_HorizontalBearingY: 58.375
+ m_HorizontalAdvance: 21.046875
+ m_GlyphRect:
+ m_X: 53
+ m_Y: 488
+ m_Width: 17
+ m_Height: 13
+ m_Scale: 1
+ m_AtlasIndex: 0
+ m_ClassDefinitionType: 0
+ m_CharacterTable:
+ - m_ElementType: 1
+ m_Unicode: 32
+ m_GlyphIndex: 308
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 33
+ m_GlyphIndex: 315
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 34
+ m_GlyphIndex: 345
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 35
+ m_GlyphIndex: 322
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 36
+ m_GlyphIndex: 365
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 37
+ m_GlyphIndex: 395
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 38
+ m_GlyphIndex: 350
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 39
+ m_GlyphIndex: 346
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 40
+ m_GlyphIndex: 329
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 41
+ m_GlyphIndex: 330
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 42
+ m_GlyphIndex: 321
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 43
+ m_GlyphIndex: 371
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 44
+ m_GlyphIndex: 311
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 45
+ m_GlyphIndex: 325
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 46
+ m_GlyphIndex: 310
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 47
+ m_GlyphIndex: 323
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 48
+ m_GlyphIndex: 281
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 49
+ m_GlyphIndex: 282
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 50
+ m_GlyphIndex: 283
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 51
+ m_GlyphIndex: 284
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 52
+ m_GlyphIndex: 285
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 53
+ m_GlyphIndex: 286
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 54
+ m_GlyphIndex: 287
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 55
+ m_GlyphIndex: 288
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 56
+ m_GlyphIndex: 289
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 57
+ m_GlyphIndex: 290
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 58
+ m_GlyphIndex: 312
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 59
+ m_GlyphIndex: 313
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 60
+ m_GlyphIndex: 378
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 61
+ m_GlyphIndex: 375
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 62
+ m_GlyphIndex: 377
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 63
+ m_GlyphIndex: 317
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 64
+ m_GlyphIndex: 349
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 65
+ m_GlyphIndex: 1
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 66
+ m_GlyphIndex: 14
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 67
+ m_GlyphIndex: 15
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 68
+ m_GlyphIndex: 21
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 69
+ m_GlyphIndex: 25
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 70
+ m_GlyphIndex: 35
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 71
+ m_GlyphIndex: 36
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 72
+ m_GlyphIndex: 41
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 73
+ m_GlyphIndex: 44
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 74
+ m_GlyphIndex: 55
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 75
+ m_GlyphIndex: 57
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 76
+ m_GlyphIndex: 59
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 77
+ m_GlyphIndex: 65
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 78
+ m_GlyphIndex: 66
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 79
+ m_GlyphIndex: 72
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 80
+ m_GlyphIndex: 84
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 81
+ m_GlyphIndex: 86
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 82
+ m_GlyphIndex: 87
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 83
+ m_GlyphIndex: 91
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 84
+ m_GlyphIndex: 97
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 85
+ m_GlyphIndex: 102
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 86
+ m_GlyphIndex: 113
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 87
+ m_GlyphIndex: 114
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 88
+ m_GlyphIndex: 119
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 89
+ m_GlyphIndex: 120
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 90
+ m_GlyphIndex: 125
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 91
+ m_GlyphIndex: 333
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 92
+ m_GlyphIndex: 324
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 93
+ m_GlyphIndex: 334
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 94
+ m_GlyphIndex: 385
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 95
+ m_GlyphIndex: 328
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 96
+ m_GlyphIndex: 427
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 97
+ m_GlyphIndex: 140
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 98
+ m_GlyphIndex: 153
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 99
+ m_GlyphIndex: 154
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 100
+ m_GlyphIndex: 160
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 101
+ m_GlyphIndex: 164
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 102
+ m_GlyphIndex: 174
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 103
+ m_GlyphIndex: 175
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 104
+ m_GlyphIndex: 180
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 105
+ m_GlyphIndex: 183
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 106
+ m_GlyphIndex: 195
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 107
+ m_GlyphIndex: 198
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 108
+ m_GlyphIndex: 201
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 109
+ m_GlyphIndex: 207
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 110
+ m_GlyphIndex: 208
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 111
+ m_GlyphIndex: 215
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 112
+ m_GlyphIndex: 227
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 113
+ m_GlyphIndex: 229
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 114
+ m_GlyphIndex: 230
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 115
+ m_GlyphIndex: 234
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 116
+ m_GlyphIndex: 241
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 117
+ m_GlyphIndex: 246
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 118
+ m_GlyphIndex: 257
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 119
+ m_GlyphIndex: 258
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 120
+ m_GlyphIndex: 263
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 121
+ m_GlyphIndex: 264
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 122
+ m_GlyphIndex: 269
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 123
+ m_GlyphIndex: 331
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 124
+ m_GlyphIndex: 357
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 125
+ m_GlyphIndex: 332
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 126
+ m_GlyphIndex: 383
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 160
+ m_GlyphIndex: 309
+ m_Scale: 1
+ - m_ElementType: 1
+ m_Unicode: 8230
+ m_GlyphIndex: 314
+ m_Scale: 1
+ m_AtlasTextures:
+ - {fileID: -8651066527397771524}
+ m_AtlasTextureIndex: 0
+ m_IsMultiAtlasTexturesEnabled: 0
+ m_ClearDynamicDataOnBuild: 0
+ m_UsedGlyphRects:
+ - m_X: 0
+ m_Y: 0
+ m_Width: 36
+ m_Height: 86
+ - m_X: 0
+ m_Y: 86
+ m_Width: 30
+ m_Height: 86
+ - m_X: 0
+ m_Y: 172
+ m_Width: 54
+ m_Height: 79
+ - m_X: 30
+ m_Y: 86
+ m_Width: 43
+ m_Height: 78
+ - m_X: 36
+ m_Y: 0
+ m_Width: 33
+ m_Height: 78
+ - m_X: 69
+ m_Y: 0
+ m_Width: 33
+ m_Height: 78
+ - m_X: 0
+ m_Y: 251
+ m_Width: 17
+ m_Height: 78
+ - m_X: 0
+ m_Y: 329
+ m_Width: 71
+ m_Height: 77
+ - m_X: 17
+ m_Y: 251
+ m_Width: 31
+ m_Height: 76
+ - m_X: 48
+ m_Y: 251
+ m_Width: 31
+ m_Height: 76
+ - m_X: 54
+ m_Y: 164
+ m_Width: 26
+ m_Height: 76
+ - m_X: 73
+ m_Y: 78
+ m_Width: 26
+ m_Height: 76
+ - m_X: 0
+ m_Y: 406
+ m_Width: 26
+ m_Height: 76
+ - m_X: 0
+ m_Y: 482
+ m_Width: 29
+ m_Height: 29
+ - m_X: 26
+ m_Y: 406
+ m_Width: 26
+ m_Height: 76
+ - m_X: 29
+ m_Y: 482
+ m_Width: 18
+ m_Height: 29
+ - m_X: 47
+ m_Y: 482
+ m_Width: 28
+ m_Height: 24
+ - m_X: 52
+ m_Y: 406
+ m_Width: 48
+ m_Height: 73
+ - m_X: 75
+ m_Y: 479
+ m_Width: 43
+ m_Height: 32
+ - m_X: 71
+ m_Y: 327
+ m_Width: 44
+ m_Height: 73
+ - m_X: 100
+ m_Y: 400
+ m_Width: 42
+ m_Height: 72
+ - m_X: 118
+ m_Y: 472
+ m_Width: 38
+ m_Height: 36
+ - m_X: 79
+ m_Y: 240
+ m_Width: 42
+ m_Height: 72
+ - m_X: 80
+ m_Y: 154
+ m_Width: 45
+ m_Height: 71
+ - m_X: 99
+ m_Y: 78
+ m_Width: 39
+ m_Height: 70
+ - m_X: 102
+ m_Y: 0
+ m_Width: 19
+ m_Height: 70
+ - m_X: 121
+ m_Y: 0
+ m_Width: 42
+ m_Height: 69
+ - m_X: 115
+ m_Y: 312
+ m_Width: 42
+ m_Height: 69
+ - m_X: 115
+ m_Y: 381
+ m_Width: 37
+ m_Height: 17
+ - m_X: 142
+ m_Y: 398
+ m_Width: 20
+ m_Height: 69
+ - m_X: 156
+ m_Y: 467
+ m_Width: 41
+ m_Height: 44
+ - m_X: 152
+ m_Y: 381
+ m_Width: 44
+ m_Height: 16
+ - m_X: 162
+ m_Y: 397
+ m_Width: 42
+ m_Height: 68
+ - m_X: 197
+ m_Y: 465
+ m_Width: 43
+ m_Height: 43
+ - m_X: 121
+ m_Y: 225
+ m_Width: 42
+ m_Height: 68
+ - m_X: 125
+ m_Y: 148
+ m_Width: 20
+ m_Height: 68
+ - m_X: 138
+ m_Y: 69
+ m_Width: 72
+ m_Height: 66
+ - m_X: 163
+ m_Y: 0
+ m_Width: 58
+ m_Height: 66
+ - m_X: 157
+ m_Y: 293
+ m_Width: 44
+ m_Height: 66
+ - m_X: 157
+ m_Y: 359
+ m_Width: 17
+ m_Height: 22
+ - m_X: 174
+ m_Y: 359
+ m_Width: 43
+ m_Height: 20
+ - m_X: 204
+ m_Y: 379
+ m_Width: 44
+ m_Height: 66
+ - m_X: 240
+ m_Y: 445
+ m_Width: 44
+ m_Height: 66
+ - m_X: 145
+ m_Y: 135
+ m_Width: 44
+ m_Height: 66
+ - m_X: 145
+ m_Y: 201
+ m_Width: 47
+ m_Height: 23
+ - m_X: 189
+ m_Y: 135
+ m_Width: 44
+ m_Height: 66
+ - m_X: 210
+ m_Y: 66
+ m_Width: 44
+ m_Height: 66
+ - m_X: 221
+ m_Y: 0
+ m_Width: 43
+ m_Height: 66
+ - m_X: 163
+ m_Y: 224
+ m_Width: 43
+ m_Height: 66
+ - m_X: 201
+ m_Y: 290
+ m_Width: 71
+ m_Height: 65
+ - m_X: 206
+ m_Y: 201
+ m_Width: 49
+ m_Height: 65
+ - m_X: 233
+ m_Y: 132
+ m_Width: 44
+ m_Height: 65
+ - m_X: 254
+ m_Y: 66
+ m_Width: 44
+ m_Height: 65
+ - m_X: 264
+ m_Y: 0
+ m_Width: 44
+ m_Height: 65
+ - m_X: 248
+ m_Y: 355
+ m_Width: 44
+ m_Height: 65
+ - m_X: 284
+ m_Y: 420
+ m_Width: 44
+ m_Height: 65
+ - m_X: 255
+ m_Y: 197
+ m_Width: 43
+ m_Height: 65
+ - m_X: 277
+ m_Y: 131
+ m_Width: 43
+ m_Height: 65
+ - m_X: 298
+ m_Y: 65
+ m_Width: 42
+ m_Height: 65
+ - m_X: 308
+ m_Y: 0
+ m_Width: 39
+ m_Height: 65
+ - m_X: 272
+ m_Y: 262
+ m_Width: 56
+ m_Height: 64
+ - m_X: 298
+ m_Y: 196
+ m_Width: 46
+ m_Height: 64
+ - m_X: 320
+ m_Y: 130
+ m_Width: 46
+ m_Height: 64
+ - m_X: 340
+ m_Y: 65
+ m_Width: 46
+ m_Height: 64
+ - m_X: 347
+ m_Y: 0
+ m_Width: 46
+ m_Height: 64
+ - m_X: 292
+ m_Y: 326
+ m_Width: 44
+ m_Height: 64
+ - m_X: 292
+ m_Y: 390
+ m_Width: 17
+ m_Height: 30
+ - m_X: 328
+ m_Y: 260
+ m_Width: 44
+ m_Height: 64
+ - m_X: 344
+ m_Y: 194
+ m_Width: 43
+ m_Height: 64
+ - m_X: 366
+ m_Y: 129
+ m_Width: 41
+ m_Height: 64
+ - m_X: 386
+ m_Y: 64
+ m_Width: 38
+ m_Height: 64
+ - m_X: 393
+ m_Y: 0
+ m_Width: 33
+ m_Height: 64
+ - m_X: 426
+ m_Y: 0
+ m_Width: 68
+ m_Height: 55
+ - m_X: 494
+ m_Y: 0
+ m_Width: 17
+ m_Height: 64
+ - m_X: 426
+ m_Y: 55
+ m_Width: 64
+ m_Height: 55
+ - m_X: 490
+ m_Y: 64
+ m_Width: 17
+ m_Height: 57
+ - m_X: 424
+ m_Y: 110
+ m_Width: 45
+ m_Height: 55
+ - m_X: 407
+ m_Y: 128
+ m_Width: 17
+ m_Height: 49
+ - m_X: 469
+ m_Y: 121
+ m_Width: 42
+ m_Height: 56
+ - m_X: 424
+ m_Y: 165
+ m_Width: 44
+ m_Height: 63
+ - m_X: 468
+ m_Y: 177
+ m_Width: 43
+ m_Height: 56
+ - m_X: 387
+ m_Y: 193
+ m_Width: 36
+ m_Height: 63
+ - m_X: 423
+ m_Y: 228
+ m_Width: 44
+ m_Height: 63
+ - m_X: 387
+ m_Y: 256
+ m_Width: 36
+ m_Height: 56
+ - m_X: 467
+ m_Y: 233
+ m_Width: 44
+ m_Height: 63
+ - m_X: 423
+ m_Y: 291
+ m_Width: 43
+ m_Height: 54
+ - m_X: 466
+ m_Y: 296
+ m_Width: 43
+ m_Height: 54
+ - m_X: 372
+ m_Y: 312
+ m_Width: 42
+ m_Height: 56
+ - m_X: 414
+ m_Y: 345
+ m_Width: 42
+ m_Height: 55
+ - m_X: 456
+ m_Y: 350
+ m_Width: 42
+ m_Height: 55
+ - m_X: 336
+ m_Y: 368
+ m_Width: 42
+ m_Height: 53
+ - m_X: 328
+ m_Y: 421
+ m_Width: 39
+ m_Height: 63
+ - m_X: 367
+ m_Y: 421
+ m_Width: 41
+ m_Height: 56
+ - m_X: 408
+ m_Y: 400
+ m_Width: 42
+ m_Height: 42
+ - m_X: 450
+ m_Y: 405
+ m_Width: 42
+ m_Height: 42
+ m_FreeGlyphRects:
+ - m_X: 30
+ m_Y: 164
+ m_Width: 24
+ m_Height: 8
+ - m_X: 36
+ m_Y: 78
+ m_Width: 37
+ m_Height: 8
+ - m_X: 47
+ m_Y: 506
+ m_Width: 28
+ m_Height: 5
+ - m_X: 52
+ m_Y: 479
+ m_Width: 23
+ m_Height: 3
+ - m_X: 17
+ m_Y: 327
+ m_Width: 54
+ m_Height: 2
+ - m_X: 71
+ m_Y: 400
+ m_Width: 29
+ m_Height: 6
+ - m_X: 100
+ m_Y: 472
+ m_Width: 18
+ m_Height: 7
+ - m_X: 54
+ m_Y: 240
+ m_Width: 25
+ m_Height: 11
+ - m_X: 73
+ m_Y: 154
+ m_Width: 7
+ m_Height: 10
+ - m_X: 79
+ m_Y: 312
+ m_Width: 36
+ m_Height: 15
+ - m_X: 115
+ m_Y: 398
+ m_Width: 27
+ m_Height: 2
+ - m_X: 118
+ m_Y: 508
+ m_Width: 38
+ m_Height: 3
+ - m_X: 142
+ m_Y: 467
+ m_Width: 14
+ m_Height: 5
+ - m_X: 152
+ m_Y: 397
+ m_Width: 10
+ m_Height: 1
+ - m_X: 162
+ m_Y: 465
+ m_Width: 35
+ m_Height: 2
+ - m_X: 80
+ m_Y: 225
+ m_Width: 41
+ m_Height: 15
+ - m_X: 99
+ m_Y: 148
+ m_Width: 26
+ m_Height: 6
+ - m_X: 102
+ m_Y: 70
+ m_Width: 36
+ m_Height: 8
+ - m_X: 121
+ m_Y: 69
+ m_Width: 17
+ m_Height: 9
+ - m_X: 121
+ m_Y: 293
+ m_Width: 36
+ m_Height: 19
+ - m_X: 196
+ m_Y: 379
+ m_Width: 8
+ m_Height: 18
+ - m_X: 174
+ m_Y: 379
+ m_Width: 30
+ m_Height: 2
+ - m_X: 197
+ m_Y: 508
+ m_Width: 43
+ m_Height: 3
+ - m_X: 204
+ m_Y: 445
+ m_Width: 36
+ m_Height: 20
+ - m_X: 138
+ m_Y: 135
+ m_Width: 7
+ m_Height: 13
+ - m_X: 125
+ m_Y: 216
+ m_Width: 20
+ m_Height: 9
+ - m_X: 163
+ m_Y: 66
+ m_Width: 47
+ m_Height: 3
+ - m_X: 125
+ m_Y: 224
+ m_Width: 38
+ m_Height: 1
+ - m_X: 163
+ m_Y: 290
+ m_Width: 38
+ m_Height: 3
+ - m_X: 192
+ m_Y: 201
+ m_Width: 14
+ m_Height: 23
+ - m_X: 210
+ m_Y: 132
+ m_Width: 23
+ m_Height: 3
+ - m_X: 217
+ m_Y: 355
+ m_Width: 31
+ m_Height: 24
+ - m_X: 201
+ m_Y: 355
+ m_Width: 47
+ m_Height: 4
+ - m_X: 248
+ m_Y: 420
+ m_Width: 36
+ m_Height: 25
+ - m_X: 284
+ m_Y: 485
+ m_Width: 227
+ m_Height: 26
+ - m_X: 233
+ m_Y: 197
+ m_Width: 22
+ m_Height: 4
+ - m_X: 254
+ m_Y: 131
+ m_Width: 23
+ m_Height: 1
+ - m_X: 264
+ m_Y: 65
+ m_Width: 34
+ m_Height: 1
+ - m_X: 206
+ m_Y: 266
+ m_Width: 66
+ m_Height: 24
+ - m_X: 255
+ m_Y: 262
+ m_Width: 17
+ m_Height: 28
+ - m_X: 277
+ m_Y: 196
+ m_Width: 21
+ m_Height: 1
+ - m_X: 298
+ m_Y: 130
+ m_Width: 22
+ m_Height: 1
+ - m_X: 272
+ m_Y: 326
+ m_Width: 20
+ m_Height: 29
+ - m_X: 298
+ m_Y: 260
+ m_Width: 30
+ m_Height: 2
+ - m_X: 320
+ m_Y: 194
+ m_Width: 24
+ m_Height: 2
+ - m_X: 340
+ m_Y: 129
+ m_Width: 26
+ m_Height: 1
+ - m_X: 347
+ m_Y: 64
+ m_Width: 39
+ m_Height: 1
+ - m_X: 490
+ m_Y: 55
+ m_Width: 4
+ m_Height: 9
+ - m_X: 424
+ m_Y: 64
+ m_Width: 2
+ m_Height: 46
+ - m_X: 386
+ m_Y: 128
+ m_Width: 21
+ m_Height: 1
+ - m_X: 507
+ m_Y: 64
+ m_Width: 4
+ m_Height: 57
+ - m_X: 469
+ m_Y: 110
+ m_Width: 21
+ m_Height: 11
+ - m_X: 468
+ m_Y: 165
+ m_Width: 1
+ m_Height: 12
+ - m_X: 366
+ m_Y: 193
+ m_Width: 21
+ m_Height: 1
+ - m_X: 407
+ m_Y: 177
+ m_Width: 17
+ m_Height: 16
+ - m_X: 423
+ m_Y: 177
+ m_Width: 1
+ m_Height: 51
+ - m_X: 344
+ m_Y: 258
+ m_Width: 43
+ m_Height: 2
+ - m_X: 467
+ m_Y: 228
+ m_Width: 1
+ m_Height: 5
+ - m_X: 509
+ m_Y: 296
+ m_Width: 2
+ m_Height: 215
+ - m_X: 466
+ m_Y: 291
+ m_Width: 1
+ m_Height: 5
+ - m_X: 372
+ m_Y: 258
+ m_Width: 15
+ m_Height: 54
+ - m_X: 328
+ m_Y: 324
+ m_Width: 44
+ m_Height: 2
+ - m_X: 414
+ m_Y: 312
+ m_Width: 9
+ m_Height: 33
+ - m_X: 498
+ m_Y: 350
+ m_Width: 13
+ m_Height: 161
+ - m_X: 456
+ m_Y: 345
+ m_Width: 10
+ m_Height: 5
+ - m_X: 336
+ m_Y: 324
+ m_Width: 36
+ m_Height: 44
+ - m_X: 309
+ m_Y: 390
+ m_Width: 27
+ m_Height: 30
+ - m_X: 328
+ m_Y: 390
+ m_Width: 8
+ m_Height: 31
+ - m_X: 328
+ m_Y: 484
+ m_Width: 183
+ m_Height: 27
+ - m_X: 367
+ m_Y: 477
+ m_Width: 144
+ m_Height: 34
+ - m_X: 378
+ m_Y: 368
+ m_Width: 36
+ m_Height: 32
+ - m_X: 378
+ m_Y: 368
+ m_Width: 30
+ m_Height: 53
+ - m_X: 408
+ m_Y: 447
+ m_Width: 103
+ m_Height: 64
+ - m_X: 408
+ m_Y: 442
+ m_Width: 42
+ m_Height: 69
+ - m_X: 492
+ m_Y: 405
+ m_Width: 19
+ m_Height: 106
+ - m_X: 450
+ m_Y: 400
+ m_Width: 6
+ m_Height: 5
+ 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: 512
+ m_AtlasHeight: 512
+ m_AtlasPadding: 5
+ m_AtlasRenderMode: 4165
+ m_glyphInfoList: []
+ m_KerningTable:
+ kerningPairs: []
+ m_FontFeatureTable:
+ m_GlyphPairAdjustmentRecords: []
+ fallbackFontAssets: []
+ m_FallbackFontAssetTable: []
+ m_CreationSettings:
+ sourceFontFileName:
+ sourceFontFileGUID: 87687f5b615890049906aa04744d5345
+ pointSizeSamplingMode: 0
+ pointSize: 69
+ padding: 5
+ packingMode: 0
+ atlasWidth: 512
+ atlasHeight: 512
+ characterSetSelectionMode: 0
+ characterSequence: 32 - 126, 160, 8203, 8230, 9633
+ 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!21 &1503351390517901866
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Offside-Regular SDF Material
+ m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
+ m_ValidKeywords: []
+ m_InvalidKeywords:
+ - _ALPHATEST_ON
+ - _DISABLE_SSR_TRANSPARENT
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap:
+ MotionVector: User
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ 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: -8651066527397771524}
+ 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}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AddPrecomputedVelocity: 0
+ - _AlphaCutoffEnable: 1
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Ambient: 0.5
+ - _Bevel: 0.5
+ - _BevelAmount: 0.25
+ - _BevelClamp: 0
+ - _BevelOffset: 0
+ - _BevelRoundness: 0
+ - _BevelType: 0
+ - _BevelWidth: 0
+ - _BlendMode: 0
+ - _BumpFace: 0
+ - _BumpOutline: 0
+ - _ColorMask: 15
+ - _ConservativeDepthOffsetEnable: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _DepthOffsetEnable: 0
+ - _Diffuse: 0.5
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 2
+ - _DstBlend: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _FaceDilate: 0
+ - _FaceUVSpeedX: 0
+ - _FaceUVSpeedY: 0
+ - _GlowInner: 0.05
+ - _GlowOffset: 0
+ - _GlowOuter: 0.05
+ - _GlowPower: 0.75
+ - _GradientScale: 6
+ - _LightAngle: 3.1416
+ - _MaskSoftnessX: 0
+ - _MaskSoftnessY: 0
+ - _OpaqueCullMode: 2
+ - _OutlineMode: 0
+ - _OutlineSoftness: 0
+ - _OutlineUVSpeedX: 0
+ - _OutlineUVSpeedY: 0
+ - _OutlineWidth: 0
+ - _PerspectiveFilter: 0.875
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _Reflectivity: 10
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _ScaleRatioA: 0.8333333
+ - _ScaleRatioB: 0.6770833
+ - _ScaleRatioC: 0.6770833
+ - _ScaleX: 1
+ - _ScaleY: 1
+ - _ShaderFlags: 0
+ - _Sharpness: 0
+ - _SpecularPower: 2
+ - _SrcBlend: 1
+ - _Stencil: 0
+ - _StencilComp: 8
+ - _StencilOp: 0
+ - _StencilReadMask: 255
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SupportDecals: 1
+ - _SurfaceType: 0
+ - _TextureHeight: 512
+ - _TextureWidth: 512
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UnderlayDilate: 0
+ - _UnderlayOffsetX: 0
+ - _UnderlayOffsetY: 0
+ - _UnderlaySoftness: 0
+ - _UseShadowThreshold: 0
+ - _VertexOffsetX: 0
+ - _VertexOffsetY: 0
+ - _WeightBold: 0.75
+ - _WeightNormal: 0
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 3
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
+ - _FaceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _FaceText_ST: {r: 1, g: 1, b: 0, a: 0}
+ - _FaceUVSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
+ - _IsoPerimeter: {r: 0, g: 0, b: 0, a: 0}
+ - _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
+ - _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
+ - _OutlineColor1: {r: 0, g: 1, b: 1, a: 1}
+ - _OutlineColor2: {r: 0.009433985, g: 0.02534519, b: 1, a: 1}
+ - _OutlineColor3: {r: 0, g: 0, b: 0, a: 1}
+ - _OutlineOffset1: {r: 0, g: 0, b: 0, a: 0}
+ - _OutlineOffset2: {r: 0, g: 0, b: 0, a: 0}
+ - _OutlineOffset3: {r: 0, g: 0, b: 0, a: 0}
+ - _OutlineUVSpeed: {r: 0, g: 0, b: 0, a: 0}
+ - _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
+ - _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
+ - _Softness: {r: 0, g: 0, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
+ - _UnderlayOffset: {r: 0, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
diff --git a/Assets/Fonts/Offside-Regular SDF.asset.meta b/Assets/Fonts/Offside-Regular SDF.asset.meta
new file mode 100644
index 0000000..3eac007
--- /dev/null
+++ b/Assets/Fonts/Offside-Regular SDF.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 54538dddc94c4d74ea7a8561e9c8c658
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Fonts/Offside-Regular.ttf b/Assets/Fonts/Offside-Regular.ttf
new file mode 100644
index 0000000..f20520a
Binary files /dev/null and b/Assets/Fonts/Offside-Regular.ttf differ
diff --git a/Assets/Fonts/Offside-Regular.ttf.meta b/Assets/Fonts/Offside-Regular.ttf.meta
new file mode 100644
index 0000000..7e5be60
--- /dev/null
+++ b/Assets/Fonts/Offside-Regular.ttf.meta
@@ -0,0 +1,21 @@
+fileFormatVersion: 2
+guid: 87687f5b615890049906aa04744d5345
+TrueTypeFontImporter:
+ externalObjects: {}
+ serializedVersion: 4
+ fontSize: 16
+ forceTextureCase: -2
+ characterSpacing: 0
+ characterPadding: 1
+ includeFontData: 1
+ fontNames:
+ - Offside
+ fallbackFontReferences: []
+ customCharacters:
+ fontRenderingMode: 0
+ ascentCalculationMode: 1
+ useLegacyBoundsCalculation: 0
+ shouldRoundAdvanceValue: 1
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats.meta b/Assets/Materials/AlienMats.meta
new file mode 100644
index 0000000..8b96433
--- /dev/null
+++ b/Assets/Materials/AlienMats.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8318dad958474c54eaa001bea6ced9c1
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh.sbs b/Assets/Materials/AlienMats/Flesh.sbs
new file mode 100644
index 0000000..d40edfb
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh.sbs
@@ -0,0 +1 @@
+
diff --git a/Assets/Materials/AlienMats/Flesh.sbs.meta b/Assets/Materials/AlienMats/Flesh.sbs.meta
new file mode 100644
index 0000000..d15b935
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh.sbs.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 4d6d818cbbc1b3d4b99b0c44b28cc977
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh.sbsar b/Assets/Materials/AlienMats/Flesh.sbsar
new file mode 100644
index 0000000..d22932a
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh.sbsar differ
diff --git a/Assets/Materials/AlienMats/Flesh.sbsar.meta b/Assets/Materials/AlienMats/Flesh.sbsar.meta
new file mode 100644
index 0000000..dd75f1a
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh.sbsar.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 3b83c541870dfbb4a8e6386b0a427399
+ScriptedImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 2
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+ script: {fileID: 11500000, guid: dda12f74ff9116a42b23482252b2c482, type: 3}
+ _fileAsset: {fileID: 6013892654665635331, guid: 3b83c541870dfbb4a8e6386b0a427399, type: 3}
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0.meta b/Assets/Materials/AlienMats/Flesh_graph_0.meta
new file mode 100644
index 0000000..9e26847
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eb90719c4b139c1459d8f48a091a7201
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga
new file mode 100644
index 0000000..f42955f
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga.meta
new file mode 100644
index 0000000..3ef803f
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_basecolor.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 0cefa7db3d7a62e428665fca9cc12e35
+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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat
new file mode 100644
index 0000000..4fb866a
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat
@@ -0,0 +1,269 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Flesh_graph_0_material
+ m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _HEIGHTMAP
+ - _MASKMAP
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2225
+ stringTagMap: {}
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: 0cefa7db3d7a62e428665fca9cc12e35, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 2800000, guid: 27f6943a4bf61fa4397e7763d5b1376e, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 0cefa7db3d7a62e428665fca9cc12e35, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 2800000, guid: 14e44008a6d94d84d9f6d485e5751983, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: 9c872e4dd3b884c439d8e76efc965f7b, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BlendMode: 0
+ - _CoatMask: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 0
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 1
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _MaterialID: 1
+ - _Metallic: 0
+ - _MetallicRemapMax: 1
+ - _MetallicRemapMin: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _Smoothness: 1
+ - _SmoothnessRemapMax: 1
+ - _SmoothnessRemapMin: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _SurfaceType: 0
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &7269799972126979060
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat.meta b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat.meta
new file mode 100644
index 0000000..123057a
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_graph_0_material.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 42f2869b72079bd408e8dd9c6d8eb8d9
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga
new file mode 100644
index 0000000..0620e28
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga.meta
new file mode 100644
index 0000000..e6a5a1c
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_height.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 27f6943a4bf61fa4397e7763d5b1376e
+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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga
new file mode 100644
index 0000000..88add6f
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga.meta
new file mode 100644
index 0000000..da731f0
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_mask.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 14e44008a6d94d84d9f6d485e5751983
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ 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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga
new file mode 100644
index 0000000..a465170
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga.meta
new file mode 100644
index 0000000..d879589
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/Flesh_normal.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 9c872e4dd3b884c439d8e76efc965f7b
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ 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: 1
+ 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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0/graph_0.asset b/Assets/Materials/AlienMats/Flesh_graph_0/graph_0.asset
new file mode 100644
index 0000000..6dc98cf
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/graph_0.asset
@@ -0,0 +1,219 @@
+%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: eed5864476f84ce4b85454db09ca4eaa, type: 3}
+ m_Name: graph_0
+ m_EditorClassIdentifier:
+ AssetPath: Assets/Materials/AlienMats/Flesh.sbsar
+ OutputPath: Assets/Materials/AlienMats/Flesh_graph_0
+ RawData: {fileID: -244192453324840774, guid: 3b83c541870dfbb4a8e6386b0a427399, type: 3}
+ Name: graph_0
+ IsRoot: 1
+ FlagedForDelete: 0
+ GUID: fcd4e000-b116-4cea-bbac-525f4850da41
+ Index: 0
+ Input:
+ - rid: 5538580066769567744
+ - rid: 5538580066769567745
+ - rid: 5538580066769567746
+ Output:
+ - Index: 0
+ VirtualOutputIndex: 7
+ Description:
+ Identifier: basecolor
+ Label: basecolor
+ Index: 0
+ Type: 8
+ Channel: baseColor
+ OutputTexture: {fileID: 2800000, guid: 0cefa7db3d7a62e428665fca9cc12e35, type: 3}
+ sRGB: 1
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _BaseColorMap
+ - Index: 1
+ VirtualOutputIndex: 8
+ Description:
+ Identifier: normal
+ Label: normal
+ Index: 1
+ Type: 8
+ Channel: normal
+ OutputTexture: {fileID: 2800000, guid: 9c872e4dd3b884c439d8e76efc965f7b, type: 3}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 0
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _NormalMap
+ - Index: 2
+ VirtualOutputIndex: 9
+ Description:
+ Identifier: roughness
+ Label: roughness
+ Index: 2
+ Type: 8
+ Channel: roughness
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _RoughnessMap
+ - Index: 3
+ VirtualOutputIndex: 10
+ Description:
+ Identifier: metallic
+ Label: metallic
+ Index: 3
+ Type: 8
+ Channel: metallic
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _MetallicGlossMap
+ - Index: 4
+ VirtualOutputIndex: 11
+ Description:
+ Identifier: height
+ Label: height
+ Index: 4
+ Type: 8
+ Channel: height
+ OutputTexture: {fileID: 2800000, guid: 27f6943a4bf61fa4397e7763d5b1376e, type: 3}
+ sRGB: 1
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _HeightMap
+ - Index: 5
+ VirtualOutputIndex: 12
+ Description:
+ Identifier: ambientocclusion
+ Label: ambientocclusion
+ Index: 5
+ Type: 8
+ Channel: ambientOcclusion
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _OcclusionMap
+ - Index: 6
+ VirtualOutputIndex: 6
+ Description:
+ Identifier: mask
+ Label: mask
+ Index: 6
+ Type: 8
+ Channel: mask
+ OutputTexture: {fileID: 2800000, guid: 14e44008a6d94d84d9f6d485e5751983, type: 3}
+ sRGB: 0
+ IsVirtual: 1
+ IsAlphaAssignable: 0
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 4
+ MaterialTextureTarget: _MaskMap
+ HasPhysicalSize: 0
+ PhysicalSize: {x: 0, y: 0, z: 0}
+ EnablePhysicalSize: 0
+ Thumbnail:
+ HasThumbnail: 0
+ CurrentStatePreset:
+ IsRuntimeOnly: 0
+ GenerateAllOutputs: 0
+ GenerateAllMipmaps: 1
+ OutputMaterial: {fileID: 2100000, guid: 42f2869b72079bd408e8dd9c6d8eb8d9, type: 2}
+ DefaultPreset: " \n \n
+ \n"
+ MaterialShader: HDRP/Lit
+ RenderTextures: 0
+ OutputRemaped: 0
+ references:
+ version: 2
+ RefIds:
+ - rid: 5538580066769567744
+ type: {class: SubstanceInputInt2, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 0
+ Description:
+ Identifier: $outputsize
+ Label: $outputsize
+ GuiGroup:
+ GuiDescription:
+ Type: 5
+ WidgetType: 0
+ Data: {x: 10, y: 10}
+ NumericalDescription:
+ DefaultValue: {x: 8, y: 8}
+ MinValue: {x: 0, y: 0}
+ MaxValue: {x: 1, y: 1}
+ SliderClamp: 0
+ EnumValueCount: 0
+ EnumValues: []
+ - rid: 5538580066769567745
+ type: {class: SubstanceInputInt, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 1
+ Description:
+ Identifier: $randomseed
+ Label: $randomseed
+ GuiGroup:
+ GuiDescription:
+ Type: 4
+ WidgetType: 0
+ Data: 0
+ NumericalDescription:
+ DefaultValue: 0
+ MinValue: 0
+ MaxValue: 1
+ SliderStep: 0.01
+ SliderClamp: 0
+ LabelFalse:
+ LabelTrue:
+ EnumValueCount: 0
+ EnumValues: []
+ - rid: 5538580066769567746
+ type: {class: SubstanceInputFloat, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 2
+ Description:
+ Identifier: global_rougness
+ Label: Global Roughness
+ GuiGroup:
+ GuiDescription:
+ Type: 0
+ WidgetType: 1
+ Data: 0.2
+ NumericalDescription:
+ DefaultValue: 0.2
+ MinValue: 0
+ MaxValue: 1
+ SliderStep: 0.01
+ SliderClamp: 1
+ EnumValueCount: 0
+ EnumValues: []
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0/graph_0.asset.meta b/Assets/Materials/AlienMats/Flesh_graph_0/graph_0.asset.meta
new file mode 100644
index 0000000..eed8221
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0/graph_0.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 70389a07fa0b46441b18f869638e2659
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy.meta
new file mode 100644
index 0000000..b0851b2
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3b42faa05525d3540b3534f4e83b45a9
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga
new file mode 100644
index 0000000..8b0bdc3
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga.meta
new file mode 100644
index 0000000..038170f
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_basecolor.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: e670aae222b72624fa9542a3465aa36b
+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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat
new file mode 100644
index 0000000..75911f9
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat
@@ -0,0 +1,333 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Flesh_graph_0_copy_material
+ m_Shader: {fileID: -6465566751694194690, guid: c28bb37ced75c094faa86ea19e772801, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ m_InvalidKeywords:
+ - _HEIGHTMAP
+ - _MASKMAP
+ - _NORMALMAP
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2225
+ stringTagMap:
+ MotionVector: User
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _ANISOTROPY_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BASE_COLOR_MAP:
+ m_Texture: {fileID: 2800000, guid: e670aae222b72624fa9542a3465aa36b, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BUMP_MAP:
+ m_Texture: {fileID: 2800000, guid: 53b4944204d1ecc4ca243985be42afb8, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 2800000, guid: e670aae222b72624fa9542a3465aa36b, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _COAT_NORMAL:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EMISSION_COLOR_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 2800000, guid: d4e6709794b7b4d4cabcb38ff134c253, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _METALNESS_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: e670aae222b72624fa9542a3465aa36b, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 2800000, guid: 1abd7fc60227cb74dae99840da4bab68, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 2800000, guid: 53b4944204d1ecc4ca243985be42afb8, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _REFLECTIONS_COLOR_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _REFLECTIONS_IOR_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _REFLECTIONS_ROUGHNESS_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TRANSPARENCY_MAP:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _ANISOTROPY: 1
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BASE_COLOR_WEIGHT: 1
+ - _BUMP_MAP_STRENGTH: 0.3
+ - _BlendMode: 0
+ - _COAT_IOR: 1.4
+ - _COAT_ROUGHNESS: 0
+ - _COAT_THICKNESS: 5
+ - _COAT_WEIGHT: 0
+ - _CoatMask: 0
+ - _ConservativeDepthOffsetEnable: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 0
+ - _EMISSION_WEIGHT: 1
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 1
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _METALNESS: 0
+ - _MaterialID: 1
+ - _Metallic: 0
+ - _MetallicRemapMax: 1
+ - _MetallicRemapMin: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _REFLECTIONS_IOR: 1.52
+ - _REFLECTIONS_ROUGHNESS: 1
+ - _REFLECTIONS_WEIGHT: 1
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _Smoothness: 1
+ - _SmoothnessRemapMax: 1
+ - _SmoothnessRemapMin: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 42
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _SurfaceType: 0
+ - _TRANSPARENCY_WEIGHT: 1
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - _BASE_COLOR: {r: 1, g: 1, b: 1, a: 1}
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _COAT_COLOR: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EMISSION_COLOR: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _REFLECTIONS_COLOR: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _TRANSPARENCY: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &1773682753321307064
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat.meta
new file mode 100644
index 0000000..f6a602b
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_graph_0_copy_material.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 841a7fa194d19b640a2f3441254d55eb
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga
new file mode 100644
index 0000000..a309844
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga.meta
new file mode 100644
index 0000000..51cb260
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_height.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: d4e6709794b7b4d4cabcb38ff134c253
+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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga
new file mode 100644
index 0000000..50a9dd8
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga.meta
new file mode 100644
index 0000000..c348015
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_mask.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 1abd7fc60227cb74dae99840da4bab68
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ 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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: 4
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga
new file mode 100644
index 0000000..7e07efe
Binary files /dev/null and b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga differ
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga.meta
new file mode 100644
index 0000000..4cf5805
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/Flesh_normal.tga.meta
@@ -0,0 +1,123 @@
+fileFormatVersion: 2
+guid: 53b4944204d1ecc4ca243985be42afb8
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 12
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 0
+ 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: 1
+ 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: 1
+ 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: 4096
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 0
+ 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
+ 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/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset b/Assets/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset
new file mode 100644
index 0000000..0c0e9ca
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset
@@ -0,0 +1,219 @@
+%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: eed5864476f84ce4b85454db09ca4eaa, type: 3}
+ m_Name: graph_0_copy
+ m_EditorClassIdentifier:
+ AssetPath: Assets/Materials/AlienMats/Flesh.sbsar
+ OutputPath: Assets/Materials/AlienMats/Flesh_graph_0_copy
+ RawData: {fileID: -244192453324840774, guid: 3b83c541870dfbb4a8e6386b0a427399, type: 3}
+ Name: graph_0_copy
+ IsRoot: 0
+ FlagedForDelete: 0
+ GUID: 356b82b0-59ce-47b6-ad6b-fe6a07255798
+ Index: 0
+ Input:
+ - rid: 5538580066769567747
+ - rid: 5538580066769567748
+ - rid: 5538580066769567749
+ Output:
+ - Index: 0
+ VirtualOutputIndex: 7
+ Description:
+ Identifier: basecolor
+ Label: basecolor
+ Index: 0
+ Type: 8
+ Channel: baseColor
+ OutputTexture: {fileID: 2800000, guid: e670aae222b72624fa9542a3465aa36b, type: 3}
+ sRGB: 1
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _BaseColorMap
+ - Index: 1
+ VirtualOutputIndex: 8
+ Description:
+ Identifier: normal
+ Label: normal
+ Index: 1
+ Type: 8
+ Channel: normal
+ OutputTexture: {fileID: 2800000, guid: 53b4944204d1ecc4ca243985be42afb8, type: 3}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 0
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _NormalMap
+ - Index: 2
+ VirtualOutputIndex: 9
+ Description:
+ Identifier: roughness
+ Label: roughness
+ Index: 2
+ Type: 8
+ Channel: roughness
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _RoughnessMap
+ - Index: 3
+ VirtualOutputIndex: 10
+ Description:
+ Identifier: metallic
+ Label: metallic
+ Index: 3
+ Type: 8
+ Channel: metallic
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _MetallicGlossMap
+ - Index: 4
+ VirtualOutputIndex: 11
+ Description:
+ Identifier: height
+ Label: height
+ Index: 4
+ Type: 8
+ Channel: height
+ OutputTexture: {fileID: 2800000, guid: d4e6709794b7b4d4cabcb38ff134c253, type: 3}
+ sRGB: 1
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _HeightMap
+ - Index: 5
+ VirtualOutputIndex: 12
+ Description:
+ Identifier: ambientocclusion
+ Label: ambientocclusion
+ Index: 5
+ Type: 8
+ Channel: ambientOcclusion
+ OutputTexture: {fileID: 0}
+ sRGB: 0
+ IsVirtual: 0
+ IsAlphaAssignable: 1
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 0
+ MaterialTextureTarget: _OcclusionMap
+ - Index: 6
+ VirtualOutputIndex: 6
+ Description:
+ Identifier: mask
+ Label: mask
+ Index: 6
+ Type: 8
+ Channel: mask
+ OutputTexture: {fileID: 2800000, guid: 1abd7fc60227cb74dae99840da4bab68, type: 3}
+ sRGB: 0
+ IsVirtual: 1
+ IsAlphaAssignable: 0
+ AlphaChannel:
+ InvertAssignedAlpha: 0
+ Flags: 4
+ MaterialTextureTarget: _MaskMap
+ HasPhysicalSize: 0
+ PhysicalSize: {x: 0, y: 0, z: 0}
+ EnablePhysicalSize: 0
+ Thumbnail:
+ HasThumbnail: 0
+ CurrentStatePreset:
+ IsRuntimeOnly: 0
+ GenerateAllOutputs: 0
+ GenerateAllMipmaps: 1
+ OutputMaterial: {fileID: 2100000, guid: 841a7fa194d19b640a2f3441254d55eb, type: 2}
+ DefaultPreset: " \n \n
+ \n"
+ MaterialShader: HDRP/Lit
+ RenderTextures: 0
+ OutputRemaped: 0
+ references:
+ version: 2
+ RefIds:
+ - rid: 5538580066769567747
+ type: {class: SubstanceInputInt2, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 0
+ Description:
+ Identifier: $outputsize
+ Label: $outputsize
+ GuiGroup:
+ GuiDescription:
+ Type: 5
+ WidgetType: 0
+ Data: {x: 10, y: 10}
+ NumericalDescription:
+ DefaultValue: {x: 8, y: 8}
+ MinValue: {x: 0, y: 0}
+ MaxValue: {x: 1, y: 1}
+ SliderClamp: 0
+ EnumValueCount: 0
+ EnumValues: []
+ - rid: 5538580066769567748
+ type: {class: SubstanceInputInt, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 1
+ Description:
+ Identifier: $randomseed
+ Label: $randomseed
+ GuiGroup:
+ GuiDescription:
+ Type: 4
+ WidgetType: 0
+ Data: 0
+ NumericalDescription:
+ DefaultValue: 0
+ MinValue: 0
+ MaxValue: 1
+ SliderStep: 0.01
+ SliderClamp: 0
+ LabelFalse:
+ LabelTrue:
+ EnumValueCount: 0
+ EnumValues: []
+ - rid: 5538580066769567749
+ type: {class: SubstanceInputFloat, ns: Adobe.Substance.Input, asm: Adobe.Substance}
+ data:
+ Index: 2
+ Description:
+ Identifier: global_rougness
+ Label: Global Roughness
+ GuiGroup:
+ GuiDescription:
+ Type: 0
+ WidgetType: 1
+ Data: 0.2
+ NumericalDescription:
+ DefaultValue: 0.2
+ MinValue: 0
+ MaxValue: 1
+ SliderStep: 0.01
+ SliderClamp: 1
+ EnumValueCount: 0
+ EnumValues: []
diff --git a/Assets/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset.meta b/Assets/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset.meta
new file mode 100644
index 0000000..4b79b49
--- /dev/null
+++ b/Assets/Materials/AlienMats/Flesh_graph_0_copy/graph_0_copy.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ebf8c7266ed3cdd4c83b2aa07ce065a3
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/AlienMats/GlowBlueEnemy.mat b/Assets/Materials/AlienMats/GlowBlueEnemy.mat
new file mode 100644
index 0000000..70904fa
--- /dev/null
+++ b/Assets/Materials/AlienMats/GlowBlueEnemy.mat
@@ -0,0 +1,266 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-6153846281631956600
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: GlowBlueEnemy
+ m_Shader: {fileID: 4800000, guid: 6e4ae4064600d784cac1e41a9e6f2e59, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _NORMALMAP_TANGENT_SPACE
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2225
+ stringTagMap: {}
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BlendMode: 0
+ - _CoatMask: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 0
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 0
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 1
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _MaterialID: 1
+ - _Metallic: 1
+ - _MetallicRemapMax: 1
+ - _MetallicRemapMin: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _Smoothness: 0.901
+ - _SmoothnessRemapMax: 1
+ - _SmoothnessRemapMin: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _SurfaceType: 0
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - _BaseColor: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 0.3396226, g: 0.3396226, b: 0.3396226, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
diff --git a/Assets/Materials/AlienMats/GlowBlueEnemy.mat.meta b/Assets/Materials/AlienMats/GlowBlueEnemy.mat.meta
new file mode 100644
index 0000000..6e72902
--- /dev/null
+++ b/Assets/Materials/AlienMats/GlowBlueEnemy.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6c82e0d9ea5815945987fe110fe863a6
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats.meta b/Assets/Materials/HologramMats.meta
new file mode 100644
index 0000000..c94a86f
--- /dev/null
+++ b/Assets/Materials/HologramMats.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9af2c6347967a3f4b877cc3d32852683
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats/Dissolve.mat b/Assets/Materials/HologramMats/Dissolve.mat
new file mode 100644
index 0000000..27f0755
--- /dev/null
+++ b/Assets/Materials/HologramMats/Dissolve.mat
@@ -0,0 +1,225 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-7949015428687092041
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Dissolve
+ m_Shader: {fileID: 4800000, guid: f60b00c9668d7fa40af6c20a649abbea, type: 3}
+ m_ValidKeywords:
+ - _ALPHATEST_ON
+ - _DISABLE_DECALS
+ - _DISABLE_SSR_TRANSPARENT
+ - _DOUBLESIDED_ON
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 1
+ m_CustomRenderQueue: 2450
+ stringTagMap:
+ MotionVector: User
+ RenderType: TransparentCutout
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture_1E539671:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_321D3975:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_4EBB7313:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_B03F6F6B:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_B6E227BA:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_C1DBBF4E:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_FAE29F65:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - Vector1_1A992A94: 0.3
+ - Vector1_1D9A2AE: 0.01
+ - Vector1_43BB59F5: 0.01
+ - Vector1_5B4329C4: 0.5
+ - Vector1_68C5C62B: 0.45
+ - Vector1_7AA6E838: 0.01
+ - Vector1_8657B13A: 30
+ - Vector1_971D46E8: 0.02
+ - Vector1_D3EA06BB: 28.05
+ - Vector1_EC9C6E98: 0.1
+ - Vector1_EFE64959: 30
+ - Vector1_F2256962: 30
+ - Vector1_FEFF47F1: 0
+ - _AddPrecomputedVelocity: 0
+ - _AlphaClip: 0
+ - _AlphaCutoffEnable: 1
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Blend: 0
+ - _BlendMode: 0
+ - _BumpScale: 1
+ - _ConservativeDepthOffsetEnable: 0
+ - _Cull: 2
+ - _CullMode: 0
+ - _CullModeForward: 0
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailNormalMapScale: 1
+ - _DoubleSidedEnable: 1
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 2
+ - _DstBlend: 0
+ - _EnableBlendModePreserveSpecularLighting: 0
+ - _EnableFogOnTransparent: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _Parallax: 0.02
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SupportDecals: 0
+ - _Surface: 0
+ - _SurfaceType: 0
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVSec: 0
+ - _UseShadowThreshold: 0
+ - _WorkflowMode: 1
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 3
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - Color_15C2EAF8: {r: 0.14150941, g: 0.14150941, b: 0.14150941, a: 0}
+ - Color_3B270DCB: {r: 1, g: 0, b: 0, a: 0}
+ - Color_490A633A: {r: 0.3764706, g: 8.847059, b: 11.984314, a: 0}
+ - Color_57725705: {r: 0, g: 10.221912, b: 15.813397, a: 0}
+ - Color_6DF76E71: {r: 0, g: 5.145098, b: 16, a: 0}
+ - Color_B198AF46: {r: 8, g: 0, b: 0, a: 0}
+ - Color_DEEEB930: {r: 2, g: 2, b: 2, a: 1}
+ - Vector2_A1C2B0F8: {r: 1, g: 1, b: 0, a: 0}
+ - _Color: {r: 0.8113208, g: 0.8113208, b: 0.8113208, a: 1}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Materials/HologramMats/Dissolve.mat.meta b/Assets/Materials/HologramMats/Dissolve.mat.meta
new file mode 100644
index 0000000..d302d78
--- /dev/null
+++ b/Assets/Materials/HologramMats/Dissolve.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1dee8d8c1d79d094f9c110a98b46d713
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats/FresnelGlow.mat b/Assets/Materials/HologramMats/FresnelGlow.mat
new file mode 100644
index 0000000..3af4778
--- /dev/null
+++ b/Assets/Materials/HologramMats/FresnelGlow.mat
@@ -0,0 +1,187 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: FresnelGlow
+ m_Shader: {fileID: 4800000, guid: d3525cc26dee0e944b2a506b290f9cef, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_DECALS
+ - _DISABLE_SSR_TRANSPARENT
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 2000
+ stringTagMap:
+ MotionVector: User
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture2D_153BB4A9:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_3807F2AD:
+ m_Texture: {fileID: 2800000, guid: b7e56f232ba59f04fb72076bb13d9eea, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_A09B286:
+ m_Texture: {fileID: 2800000, guid: 09ed030f11ffd8b41885581d44947d25, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _AddPrecomputedVelocity: 0
+ - _AlphaClip: 0
+ - _AlphaCutoffEnable: 0
+ - _AlphaDstBlend: 0
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Blend: 0
+ - _BlendMode: 0
+ - _BumpScale: 1
+ - _ConservativeDepthOffsetEnable: 0
+ - _Cull: 2
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailNormalMapScale: 1
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 2
+ - _DstBlend: 0
+ - _EnableBlendModePreserveSpecularLighting: 0
+ - _EnableFogOnTransparent: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.343
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _Parallax: 0.02
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 1
+ - _RequireSplitLighting: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 8
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 10
+ - _StencilRefMV: 40
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SupportDecals: 0
+ - _Surface: 0
+ - _SurfaceType: 0
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVSec: 0
+ - _UseShadowThreshold: 0
+ - _WorkflowMode: 1
+ - _ZTestDepthEqualForOpaque: 3
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 1
+ m_Colors:
+ - Color_1178DB70: {r: 9.734288, g: 3.1088562, b: 0, a: 0}
+ - Color_58F39989: {r: 1.7129313, g: 0.8580294, b: 0.36769727, a: 0}
+ - Color_B23AA66E: {r: 2, g: 1.043137, b: 0.2196078, a: 0}
+ - _Color: {r: 0.8679245, g: 0.8679245, b: 0.8679245, a: 1}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
+--- !u!114 &700410952253490970
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Assets/Materials/HologramMats/FresnelGlow.mat.meta b/Assets/Materials/HologramMats/FresnelGlow.mat.meta
new file mode 100644
index 0000000..ef12af9
--- /dev/null
+++ b/Assets/Materials/HologramMats/FresnelGlow.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e6e2f92d70fcead4fafddfa1982e9708
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats/Hologram.mat b/Assets/Materials/HologramMats/Hologram.mat
new file mode 100644
index 0000000..685c4b9
--- /dev/null
+++ b/Assets/Materials/HologramMats/Hologram.mat
@@ -0,0 +1,256 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-589413103537959816
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Hologram
+ m_Shader: {fileID: 4800000, guid: 061bfce32970e2e4799769434794398c, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_DECALS
+ - _DISABLE_SSR_TRANSPARENT
+ - _DOUBLESIDED_ON
+ - _ENABLE_FOG_ON_TRANSPARENT
+ - _SURFACE_TYPE_TRANSPARENT
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 1
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ MotionVector: User
+ RenderType: Transparent
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture2D_48882336:
+ m_Texture: {fileID: 2800000, guid: 7bae9f3d8fb74334ba3889f53fe7eea0, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_155699A6:
+ m_Texture: {fileID: 2800000, guid: 7bae9f3d8fb74334ba3889f53fe7eea0, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_1E539671:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_26BE6A3A:
+ m_Texture: {fileID: 2800000, guid: a06a5b660e7bf614093fb5c92611652f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_321D3975:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_4EBB7313:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_A1BF87A8:
+ m_Texture: {fileID: 2800000, guid: 7bae9f3d8fb74334ba3889f53fe7eea0, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_B03F6F6B:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_B6E227BA:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_C1DBBF4E:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - Texture_FAE29F65:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - Vector1_1A992A94: 0.3
+ - Vector1_43BB59F5: 0.01
+ - Vector1_5B4329C4: 0.5
+ - Vector1_68C5C62B: 0.45
+ - Vector1_6DC2C68C: 0.53
+ - Vector1_710448D6: 0.1
+ - Vector1_75C20891: 0.05
+ - Vector1_7AA6E838: 0.01
+ - Vector1_8657B13A: 30
+ - Vector1_971D46E8: 0.02
+ - Vector1_D3EA06BB: 28.05
+ - Vector1_D7EFCEB6: 0.1
+ - Vector1_EC9C6E98: 0.1
+ - Vector1_F2256962: 30
+ - _AddPrecomputedVelocity: 0
+ - _AlphaClip: 0
+ - _AlphaCutoffEnable: 0
+ - _AlphaDstBlend: 10
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Blend: 0
+ - _BlendMode: 0
+ - _BumpScale: 1
+ - _ConservativeDepthOffsetEnable: 0
+ - _Cull: 2
+ - _CullMode: 0
+ - _CullModeForward: 0
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailNormalMapScale: 1
+ - _DoubleSidedEnable: 1
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 2
+ - _DstBlend: 10
+ - _EmissionPower: 1
+ - _EnableBlendModePreserveSpecularLighting: 0
+ - _EnableFogOnTransparent: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _OpaqueCullMode: 2
+ - _Parallax: 0.02
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 4
+ - _RequireSplitLighting: 0
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 0
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 2
+ - _StencilRefMV: 32
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SupportDecals: 0
+ - _Surface: 0
+ - _SurfaceType: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVSec: 0
+ - _UseShadowThreshold: 0
+ - _WorkflowMode: 1
+ - _ZTestDepthEqualForOpaque: 4
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 0
+ m_Colors:
+ - Color_15C2EAF8: {r: 0.14150941, g: 0.14150941, b: 0.14150941, a: 0}
+ - Color_19C6C157: {r: 0, g: 0.5679183, b: 1, a: 0.5254902}
+ - Color_29C75A16: {r: 0.504717, g: 0.5435626, b: 1, a: 1}
+ - Color_3B270DCB: {r: 1, g: 0, b: 0, a: 0}
+ - Color_490A633A: {r: 0.3764706, g: 8.847059, b: 11.984314, a: 0}
+ - Color_57725705: {r: 0, g: 10.221912, b: 15.813397, a: 0}
+ - Color_B11E0E63: {r: 0.35857958, g: 0.8822583, b: 0.9622642, a: 0}
+ - Color_B198AF46: {r: 8, g: 0, b: 0, a: 0}
+ - Color_B36099E5: {r: 23.968628, g: 5.626455, b: 0, a: 0}
+ - Color_D028D1AD: {r: 23.968628, g: 8.784314, b: 0, a: 0}
+ - Color_DEEEB930: {r: 2, g: 2, b: 2, a: 1}
+ - Color_E448CF9F: {r: 0, g: 64.26108, b: 95.87451, a: 0}
+ - Color_F6F6ECD6: {r: 0.5322179, g: 0.9811321, b: 0.9386173, a: 0}
+ - Vector2_294B0966: {r: 0.1, g: 0.1, b: 0, a: 0}
+ - Vector2_59846FE0: {r: 0, g: 1, b: 0, a: 0}
+ - Vector2_6925FF1E: {r: 1, g: 3, b: 0, a: 0}
+ - Vector2_6987868C: {r: 1, g: 3, b: 0, a: 0}
+ - Vector2_863FAA01: {r: 0, g: 3, b: 0, a: 0}
+ - Vector2_8B223909: {r: 2, g: 1, b: 0, a: 0}
+ - Vector2_A1C2B0F8: {r: 1, g: 1, b: 0, a: 0}
+ - _Color: {r: 0.8113208, g: 0.8113208, b: 0.8113208, a: 1}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: 1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Materials/HologramMats/Hologram.mat.meta b/Assets/Materials/HologramMats/Hologram.mat.meta
new file mode 100644
index 0000000..31ba0ac
--- /dev/null
+++ b/Assets/Materials/HologramMats/Hologram.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d6bc8b81c4a36be43a76c5a56b755923
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats/HologramRed.mat b/Assets/Materials/HologramMats/HologramRed.mat
new file mode 100644
index 0000000..e526a47
--- /dev/null
+++ b/Assets/Materials/HologramMats/HologramRed.mat
@@ -0,0 +1,284 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: HologramRed
+ m_Shader: {fileID: 4800000, guid: 061bfce32970e2e4799769434794398c, type: 3}
+ m_ValidKeywords:
+ - _DISABLE_SSR_TRANSPARENT
+ - _ENABLE_FOG_ON_TRANSPARENT
+ - _SURFACE_TYPE_TRANSPARENT
+ m_InvalidKeywords:
+ - _NORMALMAP_TANGENT_SPACE
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: 3000
+ stringTagMap:
+ MotionVector: User
+ RenderType: Transparent
+ disabledShaderPasses:
+ - TransparentDepthPrepass
+ - TransparentDepthPostpass
+ - TransparentBackface
+ - RayTracingPrepass
+ - MOTIONVECTORS
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - Texture2D_48882336:
+ m_Texture: {fileID: 2800000, guid: a06a5b660e7bf614093fb5c92611652f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _AnisotropyMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BaseColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _BentNormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _CoatMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissiveColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _HeightMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _IridescenceThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _NormalMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecularColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SubsurfaceMaskMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TangentMapOS:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ThicknessMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _TransmittanceColorMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_Lightmaps:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_LightmapsInd:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - unity_ShadowMasks:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - Vector1_6DC2C68C: 3.84
+ - _AORemapMax: 1
+ - _AORemapMin: 0
+ - _ATDistance: 1
+ - _AddPrecomputedVelocity: 0
+ - _AlbedoAffectEmissive: 0
+ - _AlphaCutoff: 0.5
+ - _AlphaCutoffEnable: 0
+ - _AlphaCutoffPostpass: 0.5
+ - _AlphaCutoffPrepass: 0.5
+ - _AlphaCutoffShadow: 0.5
+ - _AlphaDstBlend: 10
+ - _AlphaSrcBlend: 1
+ - _AlphaToMask: 0
+ - _AlphaToMaskInspectorValue: 0
+ - _Anisotropy: 0
+ - _BlendMode: 0
+ - _CoatMask: 0
+ - _ConservativeDepthOffsetEnable: 0
+ - _CullMode: 2
+ - _CullModeForward: 2
+ - _Cutoff: 0.5
+ - _DepthOffsetEnable: 0
+ - _DetailAlbedoScale: 1
+ - _DetailNormalScale: 1
+ - _DetailSmoothnessScale: 1
+ - _DiffusionProfile: 0
+ - _DiffusionProfileHash: 0
+ - _DisplacementLockObjectScale: 1
+ - _DisplacementLockTilingScale: 1
+ - _DisplacementMode: 0
+ - _DoubleSidedEnable: 0
+ - _DoubleSidedGIMode: 0
+ - _DoubleSidedNormalMode: 1
+ - _DstBlend: 10
+ - _EmissionPower: 0.01
+ - _EmissiveColorMode: 1
+ - _EmissiveExposureWeight: 1
+ - _EmissiveIntensity: 1
+ - _EmissiveIntensityUnit: 0
+ - _EnableBlendModePreserveSpecularLighting: 0
+ - _EnableFogOnTransparent: 1
+ - _EnableGeometricSpecularAA: 0
+ - _EnergyConservingSpecularColor: 1
+ - _HeightAmplitude: 0.02
+ - _HeightCenter: 0.5
+ - _HeightMapParametrization: 0
+ - _HeightMax: 1
+ - _HeightMin: -1
+ - _HeightOffset: 0
+ - _HeightPoMAmplitude: 2
+ - _HeightTessAmplitude: 2
+ - _HeightTessCenter: 0.5
+ - _InvTilingScale: 1
+ - _Ior: 1.5
+ - _IridescenceMask: 1
+ - _IridescenceThickness: 1
+ - _LinkDetailsWithBase: 1
+ - _MaterialID: 1
+ - _Metallic: 0
+ - _MetallicRemapMax: 1
+ - _MetallicRemapMin: 0
+ - _NormalMapSpace: 0
+ - _NormalScale: 1
+ - _OpaqueCullMode: 2
+ - _PPDLodThreshold: 5
+ - _PPDMaxSamples: 15
+ - _PPDMinSamples: 5
+ - _PPDPrimitiveLength: 1
+ - _PPDPrimitiveWidth: 1
+ - _RayTracing: 0
+ - _ReceivesSSR: 1
+ - _ReceivesSSRTransparent: 0
+ - _RefractionModel: 0
+ - _RenderQueueType: 4
+ - _RequireSplitLighting: 0
+ - _Smoothness: 0.5
+ - _SmoothnessRemapMax: 1
+ - _SmoothnessRemapMin: 0
+ - _SpecularAAScreenSpaceVariance: 0.1
+ - _SpecularAAThreshold: 0.2
+ - _SpecularOcclusionMode: 1
+ - _SrcBlend: 1
+ - _StencilRef: 0
+ - _StencilRefDepth: 0
+ - _StencilRefDistortionVec: 4
+ - _StencilRefGBuffer: 2
+ - _StencilRefMV: 32
+ - _StencilWriteMask: 6
+ - _StencilWriteMaskDepth: 8
+ - _StencilWriteMaskDistortionVec: 4
+ - _StencilWriteMaskGBuffer: 14
+ - _StencilWriteMaskMV: 40
+ - _SubsurfaceMask: 1
+ - _SupportDecals: 1
+ - _SurfaceType: 1
+ - _TexWorldScale: 1
+ - _TexWorldScaleEmissive: 1
+ - _Thickness: 1
+ - _TransmissionEnable: 1
+ - _TransparentBackfaceEnable: 0
+ - _TransparentCullMode: 2
+ - _TransparentDepthPostpassEnable: 0
+ - _TransparentDepthPrepassEnable: 0
+ - _TransparentSortPriority: 0
+ - _TransparentWritingMotionVec: 0
+ - _TransparentZWrite: 0
+ - _UVBase: 0
+ - _UVDetail: 0
+ - _UVEmissive: 0
+ - _UseEmissiveIntensity: 0
+ - _UseShadowThreshold: 0
+ - _ZTestDepthEqualForOpaque: 4
+ - _ZTestGBuffer: 4
+ - _ZTestTransparent: 4
+ - _ZWrite: 0
+ m_Colors:
+ - Color_19C6C157: {r: 1, g: 0.44021788, b: 0, a: 0.49803922}
+ - Color_E448CF9F: {r: 105.96367, g: 2.0734167, b: 0, a: 0}
+ - Vector2_6925FF1E: {r: 1, g: 3, b: 0, a: 0}
+ - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+ - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0}
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0}
+ - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0}
+ - _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1}
+ - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1}
+ - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0}
+ - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
+ - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0}
+ - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1}
+ - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0}
+ - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0}
+ m_BuildTextureStacks: []
+--- !u!114 &2520732152182830909
+MonoBehaviour:
+ m_ObjectHideFlags: 11
+ 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: da692e001514ec24dbc4cca1949ff7e8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ version: 12
+ hdPluginSubTargetMaterialVersions:
+ m_Keys: []
+ m_Values:
diff --git a/Assets/Materials/HologramMats/HologramRed.mat.meta b/Assets/Materials/HologramMats/HologramRed.mat.meta
new file mode 100644
index 0000000..8ed47c4
--- /dev/null
+++ b/Assets/Materials/HologramMats/HologramRed.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5ae9755bd5f22e842891e2044ce16250
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/HologramMats/Skybox_Mat.mat b/Assets/Materials/HologramMats/Skybox_Mat.mat
new file mode 100644
index 0000000..ba73d5d
--- /dev/null
+++ b/Assets/Materials/HologramMats/Skybox_Mat.mat
@@ -0,0 +1,89 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_PrefabParentObject: {fileID: 0}
+ m_PrefabInternal: {fileID: 0}
+ m_Name: Skybox_Mat
+ m_Shader: {fileID: 106, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords: _METALLIC_SETUP _SUNDISK_HIGH_QUALITY
+ 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}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _SpecGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _AtmosphereThickness: 0.53
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _Exposure: 1.25
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _SunDisk: 2
+ - _SunSize: 0.04
+ - _SunSizeConvergence: 5
+ - _UVSec: 0
+ - _WorkflowMode: 1
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _GroundColor: {r: 0.6392157, g: 0.6901961, b: 0.7411765, a: 1}
+ - _SkyTint: {r: 1, g: 1, b: 1, a: 1}
+ - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
diff --git a/Assets/Materials/HologramMats/Skybox_Mat.mat.meta b/Assets/Materials/HologramMats/Skybox_Mat.mat.meta
new file mode 100644
index 0000000..facef4a
--- /dev/null
+++ b/Assets/Materials/HologramMats/Skybox_Mat.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0ffaa0b7117ba8c47a9d05ae701d4b4d
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Models/Aliens.meta b/Assets/Models/Aliens.meta
new file mode 100644
index 0000000..df78440
--- /dev/null
+++ b/Assets/Models/Aliens.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d084251327ae13141bfb8b1d5143696b
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Models/Aliens/BaseAlien_Skinned.fbx b/Assets/Models/Aliens/BaseAlien_Skinned.fbx
new file mode 100644
index 0000000..7d580b6
--- /dev/null
+++ b/Assets/Models/Aliens/BaseAlien_Skinned.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e880a9e250e2ffaf29d7fb2fd5b74e288fb085fc3c2ae576c3c70b3a20430a9e
+size 22542684
diff --git a/Assets/Models/Aliens/BaseAlien_Skinned.fbx.meta b/Assets/Models/Aliens/BaseAlien_Skinned.fbx.meta
new file mode 100644
index 0000000..102cbfe
--- /dev/null
+++ b/Assets/Models/Aliens/BaseAlien_Skinned.fbx.meta
@@ -0,0 +1,106 @@
+fileFormatVersion: 2
+guid: a979cb2b3598f4a408df1e787260d896
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 1
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Models/RingText.fbx b/Assets/Models/RingText.fbx
new file mode 100644
index 0000000..ba8f2a3
--- /dev/null
+++ b/Assets/Models/RingText.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d743f125c62f264f6007f2f659a4b173fa435d9801d6669ad621bca6c2527ecc
+size 5564684
diff --git a/Assets/Models/RingText.fbx.meta b/Assets/Models/RingText.fbx.meta
new file mode 100644
index 0000000..75530bc
--- /dev/null
+++ b/Assets/Models/RingText.fbx.meta
@@ -0,0 +1,106 @@
+fileFormatVersion: 2
+guid: d7052a575d103224a9a4e9e61043aebd
+ModelImporter:
+ serializedVersion: 21300
+ internalIDToNameTable: []
+ externalObjects: {}
+ materials:
+ materialImportMode: 2
+ materialName: 0
+ materialSearch: 1
+ materialLocation: 1
+ animations:
+ legacyGenerateAnimations: 4
+ bakeSimulation: 0
+ resampleCurves: 1
+ optimizeGameObjects: 0
+ removeConstantScaleCurves: 1
+ motionNodeName:
+ rigImportErrors:
+ rigImportWarnings:
+ animationImportErrors:
+ animationImportWarnings:
+ animationRetargetingWarnings:
+ animationDoRetargetingWarnings: 0
+ importAnimatedCustomProperties: 0
+ importConstraints: 0
+ animationCompression: 1
+ animationRotationError: 0.5
+ animationPositionError: 0.5
+ animationScaleError: 0.5
+ animationWrapMode: 0
+ extraExposedTransformPaths: []
+ extraUserProperties: []
+ clipAnimations: []
+ isReadable: 0
+ meshes:
+ lODScreenPercentages: []
+ globalScale: 1
+ meshCompression: 0
+ addColliders: 0
+ useSRGBMaterialColor: 1
+ sortHierarchyByName: 1
+ importVisibility: 1
+ importBlendShapes: 1
+ importCameras: 1
+ importLights: 1
+ nodeNameCollisionStrategy: 1
+ fileIdsGeneration: 2
+ swapUVChannels: 0
+ generateSecondaryUV: 0
+ useFileUnits: 1
+ keepQuads: 0
+ weldVertices: 1
+ bakeAxisConversion: 0
+ preserveHierarchy: 0
+ skinWeightsMode: 0
+ maxBonesPerVertex: 4
+ minBoneWeight: 0.001
+ optimizeBones: 1
+ meshOptimizationFlags: -1
+ indexFormat: 0
+ secondaryUVAngleDistortion: 8
+ secondaryUVAreaDistortion: 15.000001
+ secondaryUVHardAngle: 88
+ secondaryUVMarginMethod: 1
+ secondaryUVMinLightmapResolution: 40
+ secondaryUVMinObjectScale: 1
+ secondaryUVPackMargin: 4
+ useFileScale: 1
+ tangentSpace:
+ normalSmoothAngle: 60
+ normalImportMode: 0
+ tangentImportMode: 3
+ normalCalculationMode: 4
+ legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+ blendShapeNormalImportMode: 1
+ normalSmoothingSource: 0
+ referencedClips: []
+ importAnimation: 1
+ humanDescription:
+ serializedVersion: 3
+ human: []
+ skeleton: []
+ armTwist: 0.5
+ foreArmTwist: 0.5
+ upperLegTwist: 0.5
+ legTwist: 0.5
+ armStretch: 0.05
+ legStretch: 0.05
+ feetSpacing: 0
+ globalScale: 1
+ rootMotionBoneName:
+ hasTranslationDoF: 0
+ hasExtraRoot: 0
+ skeletonHasParents: 1
+ lastHumanDescriptionAvatarSource: {instanceID: 0}
+ autoGenerateAvatarMappingIfUnspecified: 1
+ animationType: 2
+ humanoidOversampling: 1
+ avatarSetup: 0
+ addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+ remapMaterialsIfMaterialImportModeIsNone: 0
+ additionalBone: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/Experimentation/EnemyExperimentation1.unity b/Assets/Scenes/Experimentation/EnemyExperimentation1.unity
index 90d27d4..b2e270c 100644
--- a/Assets/Scenes/Experimentation/EnemyExperimentation1.unity
+++ b/Assets/Scenes/Experimentation/EnemyExperimentation1.unity
@@ -123,6 +123,11 @@ NavMeshSettings:
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
+--- !u!4 &61016254 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7208261743932278219, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ m_PrefabInstance: {fileID: 2001672456}
+ m_PrefabAsset: {fileID: 0}
--- !u!1 &144918068
GameObject:
m_ObjectHideFlags: 0
@@ -140,7 +145,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!108 &144918069
Light:
m_ObjectHideFlags: 0
@@ -340,6 +345,103 @@ MonoBehaviour:
m_PointlightHDType: 0
m_SpotLightShape: 0
m_AreaLightShape: 0
+--- !u!1 &204186952
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 204186953}
+ - component: {fileID: 204186956}
+ - component: {fileID: 204186955}
+ - component: {fileID: 204186954}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &204186953
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 204186952}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.03759664, y: 0.16410965, z: 0.09040497}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &204186954
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 204186952}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &204186955
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 204186952}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &204186956
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 204186952}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &257884400
GameObject:
m_ObjectHideFlags: 0
@@ -820,6 +922,417 @@ MonoBehaviour:
enableFptlForForwardOpaque: 0
enableBigTilePrepass: 0
isFptlEnabled: 0
+--- !u!1 &601752510
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 601752513}
+ - component: {fileID: 601752512}
+ - component: {fileID: 601752511}
+ m_Layer: 0
+ m_Name: Directional Light (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &601752511
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 601752510}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Intensity: 57205.94
+ m_EnableSpotReflector: 1
+ m_LuxAtDistance: 1
+ m_InnerSpotPercent: 0
+ m_SpotIESCutoffPercent: 100
+ m_LightDimmer: 1
+ m_VolumetricDimmer: 1
+ m_LightUnit: 2
+ m_FadeDistance: 10000
+ m_VolumetricFadeDistance: 10000
+ m_AffectDiffuse: 1
+ m_AffectSpecular: 1
+ m_NonLightmappedOnly: 0
+ m_ShapeWidth: 0.5
+ m_ShapeHeight: 0.5
+ m_AspectRatio: 1
+ m_ShapeRadius: 0.025
+ m_SoftnessScale: 1
+ m_UseCustomSpotLightShadowCone: 0
+ m_CustomSpotLightShadowCone: 30
+ m_MaxSmoothness: 0.99
+ m_ApplyRangeAttenuation: 1
+ m_DisplayAreaLightEmissiveMesh: 0
+ m_AreaLightCookie: {fileID: 0}
+ m_IESPoint: {fileID: 0}
+ m_IESSpot: {fileID: 0}
+ m_IncludeForRayTracing: 1
+ m_AreaLightShadowCone: 120
+ m_UseScreenSpaceShadows: 0
+ m_InteractsWithSky: 1
+ m_AngularDiameter: 0.5
+ m_FlareSize: 2
+ m_FlareTint: {r: 1, g: 1, b: 1, a: 1}
+ m_FlareFalloff: 4
+ m_SurfaceTexture: {fileID: 0}
+ m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1}
+ m_Distance: 1.5e+11
+ m_UseRayTracedShadows: 0
+ m_NumRayTracingSamples: 4
+ m_FilterTracedShadow: 1
+ m_FilterSizeTraced: 16
+ m_SunLightConeAngle: 0.5
+ m_LightShadowRadius: 0.5
+ m_SemiTransparentShadow: 0
+ m_ColorShadow: 1
+ m_DistanceBasedFiltering: 0
+ m_EvsmExponent: 15
+ m_EvsmLightLeakBias: 0
+ m_EvsmVarianceBias: 0.00001
+ m_EvsmBlurPasses: 0
+ m_LightlayersMask: 1
+ m_LinkShadowLayers: 1
+ m_ShadowNearPlane: 0.1
+ m_BlockerSampleCount: 24
+ m_FilterSampleCount: 16
+ m_MinFilterSize: 0.1
+ m_KernelSize: 5
+ m_LightAngle: 1
+ m_MaxDepthBias: 0.001
+ m_ShadowResolution:
+ m_Override: 512
+ m_UseOverride: 1
+ m_Level: 0
+ m_ShadowDimmer: 1
+ m_VolumetricShadowDimmer: 1
+ m_ShadowFadeDistance: 10000
+ m_UseContactShadow:
+ m_Override: 0
+ m_UseOverride: 1
+ m_Level: 0
+ m_RayTracedContactShadow: 0
+ m_ShadowTint: {r: 0, g: 0, b: 0, a: 1}
+ m_PenumbraTint: 0
+ m_NormalBias: 0.75
+ m_SlopeBias: 0.5
+ m_ShadowUpdateMode: 0
+ m_AlwaysDrawDynamicShadows: 0
+ m_UpdateShadowOnLightMovement: 0
+ m_CachedShadowTranslationThreshold: 0.01
+ m_CachedShadowAngularThreshold: 0.5
+ m_BarnDoorAngle: 90
+ m_BarnDoorLength: 0.05
+ m_preserveCachedShadow: 0
+ m_OnDemandShadowRenderOnPlacement: 1
+ m_ShadowCascadeRatios:
+ - 0.05
+ - 0.2
+ - 0.3
+ m_ShadowCascadeBorders:
+ - 0.2
+ - 0.2
+ - 0.2
+ - 0.2
+ m_ShadowAlgorithm: 0
+ m_ShadowVariant: 0
+ m_ShadowPrecision: 0
+ useOldInspector: 0
+ useVolumetric: 1
+ featuresFoldout: 1
+ m_AreaLightEmissiveMeshShadowCastingMode: 0
+ m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0
+ m_AreaLightEmissiveMeshLayer: -1
+ m_Version: 11
+ m_ObsoleteShadowResolutionTier: 1
+ m_ObsoleteUseShadowQualitySettings: 0
+ m_ObsoleteCustomShadowResolution: 512
+ m_ObsoleteContactShadows: 0
+ m_PointlightHDType: 0
+ m_SpotLightShape: 0
+ m_AreaLightShape: 0
+--- !u!108 &601752512
+Light:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 601752510}
+ m_Enabled: 1
+ serializedVersion: 10
+ m_Type: 1
+ m_Shape: 0
+ m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
+ m_Intensity: 57205.94
+ m_Range: 10
+ m_SpotAngle: 30
+ m_InnerSpotAngle: 21.80208
+ m_CookieSize: 10
+ m_Shadows:
+ m_Type: 2
+ m_Resolution: -1
+ m_CustomResolution: -1
+ m_Strength: 1
+ m_Bias: 0.05
+ m_NormalBias: 0.4
+ m_NearPlane: 0.2
+ m_CullingMatrixOverride:
+ e00: 1
+ e01: 0
+ e02: 0
+ e03: 0
+ e10: 0
+ e11: 1
+ e12: 0
+ e13: 0
+ e20: 0
+ e21: 0
+ e22: 1
+ e23: 0
+ e30: 0
+ e31: 0
+ e32: 0
+ e33: 1
+ m_UseCullingMatrixOverride: 0
+ m_Cookie: {fileID: 0}
+ m_DrawHalo: 0
+ m_Flare: {fileID: 0}
+ m_RenderMode: 0
+ m_CullingMask:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_RenderingLayerMask: 1
+ m_Lightmapping: 4
+ m_LightShadowCasterMode: 2
+ m_AreaSize: {x: 0.5, y: 0.5}
+ m_BounceIntensity: 1
+ m_ColorTemperature: 7188
+ m_UseColorTemperature: 1
+ m_BoundingSphereOverride: {x: 6.38e-43, y: 0, z: 0, w: -0.00000002472116}
+ m_UseBoundingSphereOverride: 0
+ m_UseViewFrustumForShadowCasterCull: 1
+ m_ShadowRadius: 0
+ m_ShadowAngle: 0
+--- !u!4 &601752513
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 601752510}
+ m_LocalRotation: {x: 0.90357864, y: -0.113730974, z: 0.19207726, w: 0.36567384}
+ m_LocalPosition: {x: 0, y: 3, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 8
+ m_LocalEulerAnglesHint: {x: 44.791, y: -201.833, z: -174.741}
+--- !u!1 &802469553
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 802469554}
+ - component: {fileID: 802469557}
+ - component: {fileID: 802469556}
+ - component: {fileID: 802469555}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &802469554
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 802469553}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.045007262, y: 0.24454227, z: 0.10049985}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &802469555
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 802469553}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &802469556
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 802469553}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &802469557
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 802469553}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &818755036
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 818755037}
+ - component: {fileID: 818755040}
+ - component: {fileID: 818755039}
+ - component: {fileID: 818755038}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &818755037
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 818755036}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.06878069, y: 0.059249062, z: 0.09564905}
+ m_LocalScale: {x: 0.0500802, y: 0.04818871, z: 0.030799318}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &818755038
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 818755036}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &818755039
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 818755036}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &818755040
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 818755036}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &867691766
GameObject:
m_ObjectHideFlags: 0
@@ -995,6 +1508,103 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6fa6726c37e5430458b3f7702871a8da, type: 3}
+--- !u!1 &957585047
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 957585048}
+ - component: {fileID: 957585051}
+ - component: {fileID: 957585050}
+ - component: {fileID: 957585049}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &957585048
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 957585047}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.045007214, y: 0.16407952, z: 0.09065128}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &957585049
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 957585047}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &957585050
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 957585047}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &957585051
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 957585047}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1216510142
GameObject:
m_ObjectHideFlags: 0
@@ -1058,6 +1668,315 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0.232, y: -0.028, z: -0.02}
+--- !u!1 &1444147557
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1444147558}
+ - component: {fileID: 1444147561}
+ - component: {fileID: 1444147560}
+ - component: {fileID: 1444147559}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1444147558
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1444147557}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.03759659, y: 0.24457264, z: 0.10025357}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &1444147559
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1444147557}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1444147560
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1444147557}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1444147561
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1444147557}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1584420817 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 7036213049465896255, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ m_PrefabInstance: {fileID: 2001672456}
+ m_PrefabAsset: {fileID: 0}
+--- !u!95 &1584420819
+Animator:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1584420817}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: 7bb101ef536f7f5488216135a0b67dbb, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
+--- !u!114 &1584420820
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1584420817}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4ee204cb45a53774fb5bd811472f7be8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ speed: 0
+ attackIndex: 0
+ attack: 0
+ inlight: 0
+ attackScream: 0
+--- !u!1 &1944144885
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1944144886}
+ - component: {fileID: 1944144889}
+ - component: {fileID: 1944144888}
+ - component: {fileID: 1944144887}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1944144886
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1944144885}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.0678974, y: 0.059248943, z: 0.09564905}
+ m_LocalScale: {x: 0.0500802, y: 0.04818871, z: 0.030799318}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 61016254}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &1944144887
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1944144885}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1944144888
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1944144885}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1944144889
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1944144885}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1001 &2001672456
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_RootOrder
+ value: 7
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -3.445
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.836
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0.194
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 919132149155446097, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_Name
+ value: BaseAlien_Skinned
+ objectReference: {fileID: 0}
+ - target: {fileID: 4318842964270612441, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: 42f2869b72079bd408e8dd9c6d8eb8d9, type: 2}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
--- !u!1001 &2006386675
PrefabInstance:
m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/ShootingScene.unity b/Assets/Scenes/ShootingScene.unity
index f651c25..6b0ad8c 100644
--- a/Assets/Scenes/ShootingScene.unity
+++ b/Assets/Scenes/ShootingScene.unity
@@ -594,6 +594,96 @@ VisualEffect:
m_Array: []
m_Bool:
m_Array: []
+--- !u!1001 &101973078
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 1418383850}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.10000001
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0.028000005
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 1.138
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: -0.22700024
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.94117737
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.2612777
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.05732003
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.20647891
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -27.914
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -14.135
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 28.277
+ objectReference: {fileID: 0}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[1]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[2]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -4683669308469848369, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: 919132149155446097, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Name
+ value: Hologram
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+--- !u!4 &101973079 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ m_PrefabInstance: {fileID: 101973078}
+ m_PrefabAsset: {fileID: 0}
--- !u!1 &116470765
GameObject:
m_ObjectHideFlags: 0
@@ -4005,19 +4095,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 365318976786001927, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.w
- value: 0.7334297
+ value: 0.99545825
objectReference: {fileID: 0}
- target: {fileID: 365318976786001927, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.x
- value: 0.023298591
+ value: 0.07180263
objectReference: {fileID: 0}
- target: {fileID: 365318976786001927, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.y
- value: -0.6617581
+ value: -0.060270403
objectReference: {fileID: 0}
- target: {fileID: 365318976786001927, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.z
- value: 0.15366954
+ value: 0.01657783
objectReference: {fileID: 0}
- target: {fileID: 365318977076093362, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_RootOrder
@@ -4085,7 +4175,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 365318977167042207, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.x
- value: 2.989182
+ value: 0
objectReference: {fileID: 0}
- target: {fileID: 365318977167042207, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.y
@@ -4093,7 +4183,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 365318977167042207, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.z
- value: -0.25453967
+ value: -3
objectReference: {fileID: 0}
- target: {fileID: 365318977785173342, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.x
@@ -4109,19 +4199,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 365318977785173342, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.w
- value: 0.7337321
+ value: 0.9965996
objectReference: {fileID: 0}
- target: {fileID: 365318977785173342, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.x
- value: 0.009954013
+ value: 0.05368384
objectReference: {fileID: 0}
- target: {fileID: 365318977785173342, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.y
- value: -0.6644438
+ value: -0.060561996
objectReference: {fileID: 0}
- target: {fileID: 365318977785173342, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.z
- value: 0.14160705
+ value: 0.015478803
objectReference: {fileID: 0}
- target: {fileID: 365318978058098911, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.x
@@ -4137,47 +4227,47 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 365318978058098911, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.w
- value: 0.73379195
+ value: 0.9974095
objectReference: {fileID: 0}
- target: {fileID: 365318978058098911, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.x
- value: -0.0033585802
+ value: 0.03559524
objectReference: {fileID: 0}
- target: {fileID: 365318978058098911, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.y
- value: -0.66690344
+ value: -0.060832832
objectReference: {fileID: 0}
- target: {fileID: 365318978058098911, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.z
- value: 0.12952977
+ value: 0.014377572
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.x
- value: 2.989182
+ value: -0.000023298204
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.y
- value: 1.32
+ value: 1.3199862
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalPosition.z
- value: -0.25453967
+ value: -2.4649107
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.w
- value: 0.7292207
+ value: 0.9865339
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.x
- value: 0.081848
+ value: 0.15114106
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.y
- value: -0.67512673
+ value: -0.061787855
objectReference: {fileID: 0}
- target: {fileID: 365318978543542555, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalRotation.z
- value: 0.075776465
+ value: 0.009466156
objectReference: {fileID: 0}
- target: {fileID: 1266323097372284381, guid: 57a1e0f3274302943993b8f55e87f3c9, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -6945,6 +7035,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 566453687}
+ - {fileID: 101973079}
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
diff --git a/Assets/Scenes/StartScreen.unity b/Assets/Scenes/StartScreen.unity
index cb988c0..67dc4e0 100644
--- a/Assets/Scenes/StartScreen.unity
+++ b/Assets/Scenes/StartScreen.unity
@@ -140,7 +140,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!224 &21842951
RectTransform:
m_ObjectHideFlags: 0
@@ -356,6 +356,103 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 66100492}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &69671491
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 69671492}
+ - component: {fileID: 69671495}
+ - component: {fileID: 69671494}
+ - component: {fileID: 69671493}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &69671492
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69671491}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.045007262, y: 0.24454227, z: 0.10049985}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &69671493
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69671491}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &69671494
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69671491}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &69671495
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 69671491}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &77216791
GameObject:
m_ObjectHideFlags: 0
@@ -855,6 +952,25 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 95138669}
m_Mesh: {fileID: -5495902117074765545, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
+--- !u!1 &98390042 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ m_PrefabInstance: {fileID: 1589763229}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &98390046
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 98390042}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 33ef93bdb1481e341ab083f8146e3624, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ globalRotation: {x: 0, y: 0, z: 0}
+ localRotation: {x: 0, y: 5, z: 0}
--- !u!1 &149756999
GameObject:
m_ObjectHideFlags: 0
@@ -1363,7 +1479,7 @@ Transform:
m_Father: {fileID: 149757000}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1 &289182698
+--- !u!1 &254475335
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -1371,38 +1487,52 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 289182699}
- - component: {fileID: 289182701}
- - component: {fileID: 289182700}
- m_Layer: 6
- m_Name: Sphere
+ - component: {fileID: 254475336}
+ - component: {fileID: 254475339}
+ - component: {fileID: 254475338}
+ - component: {fileID: 254475337}
+ m_Layer: 0
+ m_Name: Eye
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &289182699
+--- !u!4 &254475336
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 289182698}
- m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067}
- m_LocalPosition: {x: -0, y: 0, z: 0}
- m_LocalScale: {x: 124.4, y: 124.4, z: 124.4}
- m_ConstrainProportionsScale: 1
+ m_GameObject: {fileID: 254475335}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.0678974, y: 0.059248943, z: 0.09564905}
+ m_LocalScale: {x: 0.0500802, y: 0.04818871, z: 0.030799318}
+ m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 1041952994}
- m_RootOrder: 3
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!23 &289182700
+--- !u!135 &254475337
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 254475335}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &254475338
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 289182698}
+ m_GameObject: {fileID: 254475335}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
@@ -1416,7 +1546,7 @@ MeshRenderer:
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: 097826b1552b779408ce530fd64c6cef, type: 2}
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -1438,14 +1568,14 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
---- !u!33 &289182701
+--- !u!33 &254475339
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 289182698}
- m_Mesh: {fileID: 4711208715938537054, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
+ m_GameObject: {fileID: 254475335}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &307011675
GameObject:
m_ObjectHideFlags: 0
@@ -1463,7 +1593,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!224 &307011676
RectTransform:
m_ObjectHideFlags: 0
@@ -2289,6 +2419,137 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 510009171}
m_Mesh: {fileID: 4493585093827132993, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
+--- !u!1 &511057144
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 511057145}
+ - component: {fileID: 511057148}
+ - component: {fileID: 511057147}
+ - component: {fileID: 511057146}
+ m_Layer: 0
+ m_Name: Cube (5)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &511057145
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511057144}
+ m_LocalRotation: {x: 0.000000044703484, y: 0.680578, z: -0.000000029802322, w: 0.7326756}
+ m_LocalPosition: {x: 0.03, y: 0.121, z: -3.05}
+ m_LocalScale: {x: -0.39438716, y: 0.6992123, z: 0.29857}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 7
+ m_LocalEulerAnglesHint: {x: 0, y: 85.778, z: 0}
+--- !u!65 &511057146
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511057144}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &511057147
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511057144}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &511057148
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 511057144}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &517652799
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 517652800}
+ m_Layer: 0
+ m_Name: Sceen
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &517652800
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 517652799}
+ m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
+ m_LocalPosition: {x: -0.79, y: 1.22, z: 6.29}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 5928272534007153590}
+ - {fileID: 958616756}
+ - {fileID: 2134873913}
+ m_Father: {fileID: 0}
+ m_RootOrder: 9
+ m_LocalEulerAnglesHint: {x: 0, y: -90, z: 0}
--- !u!1 &538254252
GameObject:
m_ObjectHideFlags: 0
@@ -2316,8 +2577,8 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 538254252}
m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5}
- m_LocalPosition: {x: -39.48, y: 4, z: -0}
- m_LocalScale: {x: 600, y: 100, z: 400}
+ m_LocalPosition: {x: -39.48, y: 4.7858, z: -0}
+ m_LocalScale: {x: 600, y: 100, z: 478.56003}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1405821071}
@@ -2386,6 +2647,147 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 538254252}
m_Mesh: {fileID: 4493585093827132993, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
+--- !u!1 &597373127 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ m_PrefabInstance: {fileID: 1659089086}
+ m_PrefabAsset: {fileID: 0}
+--- !u!4 &597373128 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ m_PrefabInstance: {fileID: 1659089086}
+ m_PrefabAsset: {fileID: 0}
+--- !u!95 &597373129
+Animator:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 597373127}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: 42171bf8daba85f4ba98acb4d118fe0d, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
+--- !u!114 &597373130
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 597373127}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 33ef93bdb1481e341ab083f8146e3624, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ globalRotation: {x: 0, y: 0.5, z: 0}
+ localRotation: {x: 0, y: 5, z: 0}
+--- !u!1 &600869243
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 600869244}
+ - component: {fileID: 600869247}
+ - component: {fileID: 600869246}
+ - component: {fileID: 600869245}
+ m_Layer: 0
+ m_Name: Cube (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &600869244
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 600869243}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.921, y: -0, z: -0}
+ m_LocalScale: {x: 0.781, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!65 &600869245
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 600869243}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &600869246
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 600869243}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &600869247
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 600869243}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &602462694
GameObject:
m_ObjectHideFlags: 0
@@ -3694,7 +4096,7 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 853972317}
m_Mesh: {fileID: 4493585093827132993, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
---- !u!1 &861896743
+--- !u!1 &883506513
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -3702,43 +4104,44 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 861896744}
- - component: {fileID: 861896746}
- - component: {fileID: 861896745}
- m_Layer: 6
- m_Name: Interaction Text
+ - component: {fileID: 883506514}
+ - component: {fileID: 883506516}
+ - component: {fileID: 883506515}
+ - component: {fileID: 883506517}
+ m_Layer: 5
+ m_Name: ExitButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &861896744
+--- !u!224 &883506514
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 861896743}
+ m_GameObject: {fileID: 883506513}
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: 1175053926}
- m_RootOrder: 0
+ m_Father: {fileID: 958616756}
+ m_RootOrder: 3
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: 1394, y: -1189}
- m_SizeDelta: {x: 1000, y: 500}
+ m_AnchoredPosition: {x: -102.5, y: -114.740005}
+ m_SizeDelta: {x: 205, y: 66.57}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &861896745
+--- !u!114 &883506515
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 861896743}
+ m_GameObject: {fileID: 883506513}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
@@ -3752,7 +4155,7 @@ MonoBehaviour:
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
- m_text: Collect Power Core
+ m_text: Exit
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
@@ -3761,14 +4164,14 @@ MonoBehaviour:
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
- rgba: 4294967295
- m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ rgba: 4289901234
+ m_fontColor: {r: 0.6981132, g: 0.6981132, b: 0.6981132, a: 1}
m_enableVertexGradient: 0
- m_colorMode: 3
+ m_colorMode: 1
m_fontColorGradient:
- topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topLeft: {r: 0, g: 0, b: 0, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
- bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 0, g: 0, b: 0, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
@@ -3779,15 +4182,15 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
- m_fontSize: 245.6
- m_fontSizeBase: 36
+ m_fontSize: 46.34
+ m_fontSizeBase: 46.34
m_fontWeight: 400
- m_enableAutoSizing: 1
+ m_enableAutoSizing: 0
m_fontSizeMin: 18
- m_fontSizeMax: 1000
- m_fontStyle: 1
- m_HorizontalAlignment: 2
- m_VerticalAlignment: 512
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 4
+ m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
@@ -3815,20 +4218,64 @@ MonoBehaviour:
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
- m_margin: {x: -207.84943, y: -213.57129, z: -243.51343, w: -115.010254}
+ 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!222 &861896746
+--- !u!222 &883506516
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 861896743}
+ m_GameObject: {fileID: 883506513}
m_CullTransparentMesh: 1
+--- !u!114 &883506517
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 883506513}
+ 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: 1, g: 0.49411762, b: 0.5094314, a: 1}
+ m_PressedColor: {r: 0.5377358, g: 0, b: 0, a: 1}
+ m_SelectedColor: {r: 0.9811321, g: 0.5405482, b: 0.5405482, 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: 883506515}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &901308530
GameObject:
m_ObjectHideFlags: 0
@@ -4024,6 +4471,103 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 903789982}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &919302732
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 919302733}
+ - component: {fileID: 919302736}
+ - component: {fileID: 919302735}
+ - component: {fileID: 919302734}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &919302733
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 919302732}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.03759664, y: 0.16410965, z: 0.09040497}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &919302734
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 919302732}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &919302735
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 919302732}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &919302736
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 919302732}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &922941767
GameObject:
m_ObjectHideFlags: 0
@@ -4217,7 +4761,7 @@ Transform:
m_Children:
- {fileID: 1120882454}
m_Father: {fileID: 0}
- m_RootOrder: 7
+ m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &954967567
GameObject:
@@ -4317,6 +4861,129 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 954967567}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &958616752
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 958616756}
+ - component: {fileID: 958616755}
+ - component: {fileID: 958616754}
+ - component: {fileID: 958616753}
+ - component: {fileID: 958616757}
+ m_Layer: 5
+ m_Name: MenuCanvas
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!114 &958616753
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 958616752}
+ 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: 32
+--- !u!114 &958616754
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 958616752}
+ 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: 800, y: 600}
+ m_ScreenMatchMode: 0
+ m_MatchWidthOrHeight: 0
+ m_PhysicalUnit: 3
+ m_FallbackScreenDPI: 96
+ m_DefaultSpriteDPI: 96
+ m_DynamicPixelsPerUnit: 1
+ m_PresetInfoIsWorld: 1
+--- !u!223 &958616755
+Canvas:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 958616752}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_RenderMode: 2
+ m_Camera: {fileID: 2134873912}
+ m_PlaneDistance: 100
+ m_PixelPerfect: 0
+ m_ReceivesEvents: 1
+ m_OverrideSorting: 0
+ m_OverridePixelPerfect: 0
+ m_SortingBucketNormalizedSize: 0
+ m_AdditionalShaderChannelsFlag: 25
+ m_SortingLayerID: 0
+ m_SortingOrder: 0
+ m_TargetDisplay: 0
+--- !u!224 &958616756
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 958616752}
+ m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: 0, y: 0, z: 1}
+ m_LocalScale: {x: 0.0066345045, y: 0.0068190005, z: 0.0050000004}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2014265736}
+ - {fileID: 1096519624}
+ - {fileID: 1283619517}
+ - {fileID: 883506514}
+ m_Father: {fileID: 517652800}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 0}
+ m_AnchoredPosition: {x: 0.81, y: 0.49}
+ m_SizeDelta: {x: 799.99994, y: 449.99997}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &958616757
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 958616752}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2e6f5d7e4e9b96f4290e2fda30951de2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ title: {fileID: 2014265737}
+ textList:
+ - {fileID: 1096519625}
+ - {fileID: 1283619518}
+ - {fileID: 883506515}
+ dilateSpeed: 0.3
--- !u!1 &1012372248
GameObject:
m_ObjectHideFlags: 0
@@ -4383,7 +5050,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 8
+ m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1014948233
GameObject:
@@ -4483,7 +5150,7 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1014948233}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
---- !u!1 &1041952993
+--- !u!1 &1096519623
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -4491,83 +5158,178 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1041952994}
- - component: {fileID: 1041952997}
- - component: {fileID: 1041952996}
- - component: {fileID: 1041952995}
- m_Layer: 6
- m_Name: PowerCore_LowPoly (1)
+ - component: {fileID: 1096519624}
+ - component: {fileID: 1096519626}
+ - component: {fileID: 1096519625}
+ - component: {fileID: 1096519627}
+ m_Layer: 5
+ m_Name: StartButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &1041952994
-Transform:
+--- !u!224 &1096519624
+RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1041952993}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0.109, y: -3.799, z: 7.284}
- m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
+ m_GameObject: {fileID: 1096519623}
+ 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: 1175053926}
- - {fileID: 1640203120}
- - {fileID: 1338434977}
- - {fileID: 289182699}
- - {fileID: 1216563634}
- - {fileID: 1221381348}
- m_Father: {fileID: 1944434750}
- m_RootOrder: 2
+ m_Children: []
+ m_Father: {fileID: 958616756}
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1041952995
+ m_AnchorMin: {x: 0.5, y: 0.5}
+ m_AnchorMax: {x: 0.5, y: 0.5}
+ m_AnchoredPosition: {x: -102.5, y: 18.075}
+ m_SizeDelta: {x: 205, y: 65.92}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1096519625
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1041952993}
+ m_GameObject: {fileID: 1096519623}
m_Enabled: 1
m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 051ddd707f17e1040b0fbe15645f75b6, type: 3}
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
- itemName: Power Core 2
- itemSize: 1
- interactionCanvas: {fileID: 1175053929}
- canPickup: 1
---- !u!54 &1041952996
-Rigidbody:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1041952993}
- serializedVersion: 2
- m_Mass: 1
- m_Drag: 0
- m_AngularDrag: 0.05
- m_UseGravity: 1
- m_IsKinematic: 0
- m_Interpolate: 0
- m_Constraints: 112
- m_CollisionDetection: 0
---- !u!65 &1041952997
-BoxCollider:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1041952993}
m_Material: {fileID: 0}
- m_IsTrigger: 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: Start
+ 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: 4289901234
+ m_fontColor: {r: 0.6981132, g: 0.6981132, b: 0.6981132, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 1
+ m_fontColorGradient:
+ topLeft: {r: 0, g: 0, b: 0, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 0, g: 0, b: 0, 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: 46.34
+ m_fontSizeBase: 46.34
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 4
+ 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!222 &1096519626
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1096519623}
+ m_CullTransparentMesh: 1
+--- !u!114 &1096519627
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1096519623}
m_Enabled: 1
- serializedVersion: 2
- m_Size: {x: 6, y: 2, z: 2}
- m_Center: {x: 0, y: 0, z: 0}
+ 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.6122328, g: 1, b: 0.4943396, a: 1}
+ m_PressedColor: {r: 0.14511083, g: 0.6226415, b: 0, a: 1}
+ m_SelectedColor: {r: 0.57166845, g: 0.990566, b: 0.49902096, 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: 1096519625}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &1097581365
GameObject:
m_ObjectHideFlags: 0
@@ -4787,6 +5549,103 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1106869225}
m_Mesh: {fileID: -5495902117074765545, guid: 29efc340a7cbef649a8c21ee1939352c, type: 3}
+--- !u!1 &1111070145
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1111070146}
+ - component: {fileID: 1111070149}
+ - component: {fileID: 1111070148}
+ - component: {fileID: 1111070147}
+ m_Layer: 0
+ m_Name: Cube (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1111070146
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1111070145}
+ m_LocalRotation: {x: 0.000000029802326, y: 0.34110123, z: -0, w: 0.9400266}
+ m_LocalPosition: {x: -3.79, y: 0, z: 2.97}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 39.888, z: 0}
+--- !u!65 &1111070147
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1111070145}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1111070148
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1111070145}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1111070149
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1111070145}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1116458535
GameObject:
m_ObjectHideFlags: 0
@@ -4870,6 +5729,103 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1116458535}
m_Mesh: {fileID: -2405365958620393163, guid: 85b8590a02e31e244a2d7c224fa5bca6, type: 3}
+--- !u!1 &1119496473
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1119496474}
+ - component: {fileID: 1119496477}
+ - component: {fileID: 1119496476}
+ - component: {fileID: 1119496475}
+ m_Layer: 0
+ m_Name: Cube (3)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1119496474
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1119496473}
+ m_LocalRotation: {x: 0.000000029802326, y: 0.34110123, z: -0, w: 0.9400266}
+ m_LocalPosition: {x: 4.03, y: 0, z: -3.25}
+ m_LocalScale: {x: -0.39438716, y: 1.5042, z: 0.29857}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 39.888, z: 0}
+--- !u!65 &1119496475
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1119496473}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1119496476
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1119496473}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1119496477
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1119496473}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1001 &1120882453
PrefabInstance:
m_ObjectHideFlags: 0
@@ -4881,6 +5837,14 @@ PrefabInstance:
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d5174bc5eb650a048bdfc8aa3875ee2c, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.64846
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d5174bc5eb650a048bdfc8aa3875ee2c, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.66979
+ objectReference: {fileID: 0}
- target: {fileID: -8679921383154817045, guid: d5174bc5eb650a048bdfc8aa3875ee2c, type: 3}
propertyPath: m_LocalPosition.x
value: 0.04
@@ -5385,7 +6349,7 @@ Light:
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
---- !u!1 &1175053925
+--- !u!1 &1197436176
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -5393,99 +6357,95 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1175053926}
- - component: {fileID: 1175053929}
- - component: {fileID: 1175053928}
- - component: {fileID: 1175053927}
- m_Layer: 6
- m_Name: Canvas
+ - component: {fileID: 1197436177}
+ - component: {fileID: 1197436180}
+ - component: {fileID: 1197436179}
+ - component: {fileID: 1197436178}
+ m_Layer: 0
+ m_Name: Eye
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!224 &1175053926
-RectTransform:
+--- !u!4 &1197436177
+Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1175053925}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 2.2000027}
- m_LocalScale: {x: 0.010000001, y: 0.010000001, z: 0.010000001}
+ m_GameObject: {fileID: 1197436176}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.06878069, y: 0.059249062, z: 0.09564905}
+ m_LocalScale: {x: 0.0500802, y: 0.04818871, z: 0.030799318}
m_ConstrainProportionsScale: 0
- m_Children:
- - {fileID: 861896744}
- m_Father: {fileID: 1041952994}
- m_RootOrder: 0
+ m_Children: []
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
- m_AnchorMin: {x: 0, y: 0}
- m_AnchorMax: {x: 0, y: 0}
- m_AnchoredPosition: {x: -2.7, y: 15.610002}
- m_SizeDelta: {x: 1920, y: 1080}
- m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &1175053927
-MonoBehaviour:
+--- !u!135 &1197436178
+SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1175053925}
+ m_GameObject: {fileID: 1197436176}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
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 &1175053928
-MonoBehaviour:
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1197436179
+MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1175053925}
+ m_GameObject: {fileID: 1197436176}
m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_UiScaleMode: 0
- m_ReferencePixelsPerUnit: 100
- m_ScaleFactor: 1
- m_ReferenceResolution: {x: 800, y: 600}
- m_ScreenMatchMode: 0
- m_MatchWidthOrHeight: 0
- m_PhysicalUnit: 3
- m_FallbackScreenDPI: 96
- m_DefaultSpriteDPI: 96
- m_DynamicPixelsPerUnit: 1
- m_PresetInfoIsWorld: 1
---- !u!223 &1175053929
-Canvas:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1175053925}
- m_Enabled: 1
- serializedVersion: 3
- m_RenderMode: 2
- m_Camera: {fileID: 0}
- m_PlaneDistance: 100
- m_PixelPerfect: 0
- m_ReceivesEvents: 1
- m_OverrideSorting: 0
- m_OverridePixelPerfect: 0
- m_SortingBucketNormalizedSize: 0
- m_AdditionalShaderChannelsFlag: 25
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
+ m_SortingLayer: 0
m_SortingOrder: 0
- m_TargetDisplay: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1197436180
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1197436176}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1203947918
GameObject:
m_ObjectHideFlags: 0
@@ -5504,7 +6464,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!224 &1203947919
RectTransform:
m_ObjectHideFlags: 0
@@ -5587,333 +6547,6 @@ Canvas:
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
---- !u!1 &1216563633
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1216563634}
- - component: {fileID: 1216563636}
- - component: {fileID: 1216563635}
- m_Layer: 6
- m_Name: Visual Effect
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1216563634
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1216563633}
- 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: 1041952994}
- m_RootOrder: 4
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!73398921 &1216563635
-VFXRenderer:
- serializedVersion: 1
- m_ObjectHideFlags: 2
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1216563633}
- m_Enabled: 1
- m_CastShadows: 0
- m_ReceiveShadows: 0
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 0
- m_LightProbeUsage: 0
- m_ReflectionProbeUsage: 0
- m_RayTracingMode: 0
- m_RayTraceProcedural: 0
- m_RenderingLayerMask: 257
- m_RendererPriority: 0
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 3
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
---- !u!2083052967 &1216563636
-VisualEffect:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1216563633}
- m_Enabled: 1
- m_Asset: {fileID: 8926484042661614526, guid: 8e3b3549d5d7b134c9328c54a846ef6f, type: 3}
- m_InitialEventName: OnPlay
- m_InitialEventNameOverriden: 0
- m_StartSeed: 0
- m_ResetSeedOnPlay: 1
- m_ResourceVersion: 1
- m_PropertySheet:
- m_Float:
- m_Array: []
- m_Vector2f:
- m_Array: []
- m_Vector3f:
- m_Array: []
- m_Vector4f:
- m_Array: []
- m_Uint:
- m_Array: []
- m_Int:
- m_Array: []
- m_Matrix4x4f:
- m_Array: []
- m_AnimationCurve:
- m_Array: []
- m_Gradient:
- m_Array: []
- m_NamedObject:
- m_Array: []
- m_Bool:
- m_Array: []
---- !u!1 &1221381347
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1221381348}
- - component: {fileID: 1221381350}
- - component: {fileID: 1221381349}
- m_Layer: 6
- m_Name: Point Light
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1221381348
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1221381347}
- 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: 1041952994}
- m_RootOrder: 5
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!114 &1221381349
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1221381347}
- m_Enabled: 1
- m_EditorHideFlags: 0
- m_Script: {fileID: 11500000, guid: 7a68c43fe1f2a47cfa234b5eeaa98012, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Intensity: 600
- m_EnableSpotReflector: 1
- m_LuxAtDistance: 1
- m_InnerSpotPercent: 0
- m_SpotIESCutoffPercent: 100
- m_LightDimmer: 1
- m_VolumetricDimmer: 1
- m_LightUnit: 0
- m_FadeDistance: 10000
- m_VolumetricFadeDistance: 10000
- m_AffectDiffuse: 1
- m_AffectSpecular: 1
- m_NonLightmappedOnly: 0
- m_ShapeWidth: 0.5
- m_ShapeHeight: 0.5
- m_AspectRatio: 1
- m_ShapeRadius: 0.025
- m_SoftnessScale: 1
- m_UseCustomSpotLightShadowCone: 0
- m_CustomSpotLightShadowCone: 30
- m_MaxSmoothness: 0.99
- m_ApplyRangeAttenuation: 1
- m_DisplayAreaLightEmissiveMesh: 0
- m_AreaLightCookie: {fileID: 0}
- m_IESPoint: {fileID: 0}
- m_IESSpot: {fileID: 0}
- m_IncludeForRayTracing: 1
- m_AreaLightShadowCone: 120
- m_UseScreenSpaceShadows: 0
- m_InteractsWithSky: 1
- m_AngularDiameter: 0.5
- m_FlareSize: 2
- m_FlareTint: {r: 1, g: 1, b: 1, a: 1}
- m_FlareFalloff: 4
- m_SurfaceTexture: {fileID: 0}
- m_SurfaceTint: {r: 1, g: 1, b: 1, a: 1}
- m_Distance: 1.5e+11
- m_UseRayTracedShadows: 0
- m_NumRayTracingSamples: 4
- m_FilterTracedShadow: 1
- m_FilterSizeTraced: 16
- m_SunLightConeAngle: 0.5
- m_LightShadowRadius: 0.5
- m_SemiTransparentShadow: 0
- m_ColorShadow: 1
- m_DistanceBasedFiltering: 0
- m_EvsmExponent: 15
- m_EvsmLightLeakBias: 0
- m_EvsmVarianceBias: 0.00001
- m_EvsmBlurPasses: 0
- m_LightlayersMask: 1
- m_LinkShadowLayers: 1
- m_ShadowNearPlane: 0.1
- m_BlockerSampleCount: 24
- m_FilterSampleCount: 16
- m_MinFilterSize: 0.1
- m_KernelSize: 5
- m_LightAngle: 1
- m_MaxDepthBias: 0.001
- m_ShadowResolution:
- m_Override: 512
- m_UseOverride: 1
- m_Level: 0
- m_ShadowDimmer: 1
- m_VolumetricShadowDimmer: 1
- m_ShadowFadeDistance: 10000
- m_UseContactShadow:
- m_Override: 0
- m_UseOverride: 1
- m_Level: 0
- m_RayTracedContactShadow: 0
- m_ShadowTint: {r: 0, g: 0, b: 0, a: 1}
- m_PenumbraTint: 0
- m_NormalBias: 0.75
- m_SlopeBias: 0.5
- m_ShadowUpdateMode: 0
- m_AlwaysDrawDynamicShadows: 0
- m_UpdateShadowOnLightMovement: 0
- m_CachedShadowTranslationThreshold: 0.01
- m_CachedShadowAngularThreshold: 0.5
- m_BarnDoorAngle: 90
- m_BarnDoorLength: 0.05
- m_preserveCachedShadow: 0
- m_OnDemandShadowRenderOnPlacement: 1
- m_ShadowCascadeRatios:
- - 0.05
- - 0.2
- - 0.3
- m_ShadowCascadeBorders:
- - 0.2
- - 0.2
- - 0.2
- - 0.2
- m_ShadowAlgorithm: 0
- m_ShadowVariant: 0
- m_ShadowPrecision: 0
- useOldInspector: 0
- useVolumetric: 1
- featuresFoldout: 1
- m_AreaLightEmissiveMeshShadowCastingMode: 0
- m_AreaLightEmissiveMeshMotionVectorGenerationMode: 0
- m_AreaLightEmissiveMeshLayer: -1
- m_Version: 11
- m_ObsoleteShadowResolutionTier: 1
- m_ObsoleteUseShadowQualitySettings: 0
- m_ObsoleteCustomShadowResolution: 512
- m_ObsoleteContactShadows: 0
- m_PointlightHDType: 0
- m_SpotLightShape: 0
- m_AreaLightShape: 0
---- !u!108 &1221381350
-Light:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1221381347}
- m_Enabled: 1
- serializedVersion: 10
- m_Type: 2
- m_Shape: 0
- m_Color: {r: 1, g: 1, b: 1, a: 1}
- m_Intensity: 47.746483
- m_Range: 10
- m_SpotAngle: 30
- m_InnerSpotAngle: 21.80208
- m_CookieSize: 10
- m_Shadows:
- m_Type: 0
- m_Resolution: -1
- m_CustomResolution: -1
- m_Strength: 1
- m_Bias: 0.05
- m_NormalBias: 0.4
- m_NearPlane: 0.2
- m_CullingMatrixOverride:
- e00: 1
- e01: 0
- e02: 0
- e03: 0
- e10: 0
- e11: 1
- e12: 0
- e13: 0
- e20: 0
- e21: 0
- e22: 1
- e23: 0
- e30: 0
- e31: 0
- e32: 0
- e33: 1
- m_UseCullingMatrixOverride: 0
- m_Cookie: {fileID: 0}
- m_DrawHalo: 0
- m_Flare: {fileID: 0}
- m_RenderMode: 0
- m_CullingMask:
- serializedVersion: 2
- m_Bits: 4294967295
- m_RenderingLayerMask: 1
- m_Lightmapping: 4
- m_LightShadowCasterMode: 2
- m_AreaSize: {x: 0.5, y: 0.5}
- m_BounceIntensity: 1
- m_ColorTemperature: 20000
- m_UseColorTemperature: 1
- m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
- m_UseBoundingSphereOverride: 0
- m_UseViewFrustumForShadowCasterCull: 1
- m_ShadowRadius: 0
- m_ShadowAngle: 0
--- !u!1 &1263001282
GameObject:
m_ObjectHideFlags: 0
@@ -5965,7 +6598,7 @@ Transform:
- {fileID: 1671127455}
- {fileID: 1014948234}
m_Father: {fileID: 0}
- m_RootOrder: 5
+ m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &1275541115
PrefabInstance:
@@ -5980,7 +6613,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_RootOrder
- value: 2
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalPosition.x
@@ -6024,6 +6657,186 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
+--- !u!1 &1283619516
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1283619517}
+ - component: {fileID: 1283619519}
+ - component: {fileID: 1283619518}
+ - component: {fileID: 1283619520}
+ m_Layer: 5
+ m_Name: SettingsButton
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1283619517
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1283619516}
+ 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: 958616756}
+ m_RootOrder: 2
+ 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: -102.5, y: -48.169994}
+ m_SizeDelta: {x: 205, y: 66.57}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1283619518
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1283619516}
+ 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: Settings
+ 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: 4289901234
+ m_fontColor: {r: 0.6981132, g: 0.6981132, b: 0.6981132, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 1
+ m_fontColorGradient:
+ topLeft: {r: 0, g: 0, b: 0, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 0, g: 0, b: 0, 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: 46.34
+ m_fontSizeBase: 46.34
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 4
+ 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!222 &1283619519
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1283619516}
+ m_CullTransparentMesh: 1
+--- !u!114 &1283619520
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1283619516}
+ 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: 1, g: 0.9416598, b: 0.49411762, a: 1}
+ m_PressedColor: {r: 0.7169812, g: 0.4430577, b: 0.009469525, a: 1}
+ m_SelectedColor: {r: 0.9811321, g: 0.93515736, b: 0.43873262, 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: 1283619518}
+ m_OnClick:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1001 &1319993729
PrefabInstance:
m_ObjectHideFlags: 0
@@ -6039,13 +6852,25 @@ PrefabInstance:
propertyPath: m_RootOrder
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 1
+ objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalPosition.x
- value: 1.14
+ value: 1.1399999
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalPosition.y
- value: 0
+ value: 0.000000059604645
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalPosition.z
@@ -6057,15 +6882,15 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalRotation.x
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalRotation.y
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalRotation.z
- value: 0
+ value: -0
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
@@ -6081,90 +6906,6 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
---- !u!1 &1338434976
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 1338434977}
- - component: {fileID: 1338434979}
- - component: {fileID: 1338434978}
- m_Layer: 6
- m_Name: Icosphere
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &1338434977
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1338434976}
- m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067}
- m_LocalPosition: {x: -0, y: 0, z: 0}
- m_LocalScale: {x: 100, y: 100, z: 100}
- m_ConstrainProportionsScale: 0
- m_Children: []
- m_Father: {fileID: 1041952994}
- m_RootOrder: 2
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!23 &1338434978
-MeshRenderer:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1338434976}
- m_Enabled: 1
- m_CastShadows: 1
- m_ReceiveShadows: 1
- m_DynamicOccludee: 1
- m_StaticShadowCaster: 0
- m_MotionVectors: 1
- m_LightProbeUsage: 1
- m_ReflectionProbeUsage: 1
- m_RayTracingMode: 2
- m_RayTraceProcedural: 0
- m_RenderingLayerMask: 257
- m_RendererPriority: 0
- m_Materials:
- - {fileID: -876546973899608171, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
- - {fileID: -6478536213147159724, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
- m_StaticBatchInfo:
- firstSubMesh: 0
- subMeshCount: 0
- m_StaticBatchRoot: {fileID: 0}
- m_ProbeAnchor: {fileID: 0}
- m_LightProbeVolumeOverride: {fileID: 0}
- m_ScaleInLightmap: 1
- m_ReceiveGI: 1
- m_PreserveUVs: 0
- m_IgnoreNormalsForChartDetection: 0
- m_ImportantGI: 0
- m_StitchLightmapSeams: 1
- m_SelectedEditorRenderState: 3
- m_MinimumChartSize: 4
- m_AutoUVMaxDistance: 0.5
- m_AutoUVMaxAngle: 89
- m_LightmapParameters: {fileID: 0}
- m_SortingLayerID: 0
- m_SortingLayer: 0
- m_SortingOrder: 0
- m_AdditionalVertexStreams: {fileID: 0}
---- !u!33 &1338434979
-MeshFilter:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1338434976}
- m_Mesh: {fileID: 289301614986012343, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
--- !u!1 &1364122005
GameObject:
m_ObjectHideFlags: 0
@@ -6301,6 +7042,79 @@ Transform:
m_Father: {fileID: 1263001283}
m_RootOrder: 14
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
+--- !u!1001 &1502346880
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 597373128}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_RootOrder
+ value: 8
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.8009994
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.59866524
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.000000007450581
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.0000000037252903
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 73.549
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -7511558181221131132, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: 919132149155446097, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_Name
+ value: RingText
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
--- !u!1001 &1532479229
PrefabInstance:
m_ObjectHideFlags: 0
@@ -6314,7 +7128,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_RootOrder
- value: 3
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 1230275799037757121, guid: 83426769848397944ae1b9e0ce95ae38, type: 3}
propertyPath: m_LocalPosition.x
@@ -6456,6 +7270,103 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1539098916}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &1547111750
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1547111751}
+ - component: {fileID: 1547111754}
+ - component: {fileID: 1547111753}
+ - component: {fileID: 1547111752}
+ m_Layer: 0
+ m_Name: Eye
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1547111751
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1547111750}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: -0.03759659, y: 0.24457264, z: 0.10025357}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!135 &1547111752
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1547111750}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1547111753
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1547111750}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1547111754
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1547111750}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1554196289
GameObject:
m_ObjectHideFlags: 0
@@ -6615,7 +7526,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 4
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0.232, y: -0.028, z: -0.02}
--- !u!1001 &1570498172
PrefabInstance:
@@ -6691,6 +7602,103 @@ Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: 1feba8cdbdcbf374e870788a732d9d74, type: 3}
m_PrefabInstance: {fileID: 1570498172}
m_PrefabAsset: {fileID: 0}
+--- !u!1 &1573534245
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1573534246}
+ - component: {fileID: 1573534249}
+ - component: {fileID: 1573534248}
+ - component: {fileID: 1573534247}
+ m_Layer: 0
+ m_Name: Cube (4)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &1573534246
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1573534245}
+ m_LocalRotation: {x: 0.000000044703484, y: 0.680578, z: -0.000000029802322, w: 0.7326756}
+ m_LocalPosition: {x: 0.5, y: -0, z: -5.06}
+ m_LocalScale: {x: -0.39438716, y: 1.5042, z: 0.29857}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 6
+ m_LocalEulerAnglesHint: {x: 0, y: 85.778, z: 0}
+--- !u!65 &1573534247
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1573534245}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1573534248
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1573534245}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &1573534249
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1573534245}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &1586961565
GameObject:
m_ObjectHideFlags: 0
@@ -6788,7 +7796,80 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1586961565}
m_Mesh: {fileID: -1550514412580984892, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
---- !u!1 &1640203119
+--- !u!1001 &1589763229
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 597373128}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_RootOrder
+ value: 9
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 30
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.7466087
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0.30320203
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.25658345
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0.5336751
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 10.305
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -45.918
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: -75.489
+ objectReference: {fileID: 0}
+ - target: {fileID: -7511558181221131132, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: 919132149155446097, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ propertyPath: m_Name
+ value: RingText (1)
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+--- !u!1 &1614597052
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -6796,38 +7877,52 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1640203120}
- - component: {fileID: 1640203122}
- - component: {fileID: 1640203121}
- m_Layer: 6
- m_Name: Cube
+ - component: {fileID: 1614597053}
+ - component: {fileID: 1614597056}
+ - component: {fileID: 1614597055}
+ - component: {fileID: 1614597054}
+ m_Layer: 0
+ m_Name: Eye
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &1640203120
+--- !u!4 &1614597053
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1640203119}
- m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067}
- m_LocalPosition: {x: -0, y: 0, z: 0}
- m_LocalScale: {x: 300, y: 100, z: 100}
+ m_GameObject: {fileID: 1614597052}
+ m_LocalRotation: {x: 0.060859498, y: -0.000000052217445, z: -0.0000002904861, w: 0.9981464}
+ m_LocalPosition: {x: 0.045007214, y: 0.16407952, z: 0.09065128}
+ m_LocalScale: {x: 0.11058101, y: 0.10459778, z: 0.08269649}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 1041952994}
- m_RootOrder: 1
+ m_Father: {fileID: 1997809336}
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!23 &1640203121
+--- !u!135 &1614597054
+SphereCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1614597052}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Radius: 0.5
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1614597055
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1640203119}
+ m_GameObject: {fileID: 1614597052}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
@@ -6841,8 +7936,7 @@ MeshRenderer:
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- - {fileID: -876546973899608171, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
- - {fileID: 4874126678125670354, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
+ - {fileID: 2100000, guid: 6c82e0d9ea5815945987fe110fe863a6, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -6864,14 +7958,99 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
---- !u!33 &1640203122
+--- !u!33 &1614597056
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1640203119}
- m_Mesh: {fileID: -5495902117074765545, guid: f069e13a4a4a541428ec1849320da3d2, type: 3}
+ m_GameObject: {fileID: 1614597052}
+ m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1001 &1659089086
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_RootOrder
+ value: 10
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.028645063
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.020568479
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.030115247
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: -0.28
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 1.45
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 4.36
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.94117737
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0.2612777
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.05732003
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0.20647891
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: -27.914
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -14.135
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 28.277
+ objectReference: {fileID: 0}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[1]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -7918335002988649766, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[2]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: -4683669308469848369, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: d6bc8b81c4a36be43a76c5a56b755923, type: 2}
+ - target: {fileID: 919132149155446097, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
+ propertyPath: m_Name
+ value: Hologram
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: bc96ab0d3fc5a85418d689b8f4b09ff4, type: 3}
--- !u!1 &1671127454
GameObject:
m_ObjectHideFlags: 0
@@ -6898,7 +8077,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1671127454}
m_LocalRotation: {x: 0.5816941, y: -0, z: -0, w: 0.8134076}
- m_LocalPosition: {x: 0.33358335, y: 3.54, z: 31.72}
+ m_LocalPosition: {x: 0.33358335, y: 2.78, z: 28.5}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -7507,7 +8686,7 @@ RectTransform:
m_Children:
- {fileID: 508864731}
m_Father: {fileID: 0}
- m_RootOrder: 9
+ m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
@@ -8040,9 +9219,8 @@ Transform:
m_Children:
- {fileID: 1097581366}
- {fileID: 1717343431}
- - {fileID: 1041952994}
m_Father: {fileID: 0}
- m_RootOrder: 6
+ m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1990727175
GameObject:
@@ -8141,6 +9319,261 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1990727175}
m_Mesh: {fileID: 4493585093827132993, guid: 5a1b5aacfbc242c4b998d66774454f6f, type: 3}
+--- !u!1001 &1997809335
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_RootOrder
+ value: 11
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.1
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0.4
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0.66
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 39.64
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 0.7071068
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0.7071068
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: -90
+ objectReference: {fileID: 0}
+ - target: {fileID: -8679921383154817045, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 919132149155446097, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_Name
+ value: BaseAlien_Skinned
+ objectReference: {fileID: 0}
+ - target: {fileID: 4318842964270612441, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ propertyPath: m_Materials.Array.data[0]
+ value:
+ objectReference: {fileID: 2100000, guid: 42f2869b72079bd408e8dd9c6d8eb8d9, type: 2}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+--- !u!4 &1997809336 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7208261743932278219, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ m_PrefabInstance: {fileID: 1997809335}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1 &1997809337 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 7036213049465896255, guid: a979cb2b3598f4a408df1e787260d896, type: 3}
+ m_PrefabInstance: {fileID: 1997809335}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &1997809338
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1997809337}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 4ee204cb45a53774fb5bd811472f7be8, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ speed: 0
+ attackIndex: 0
+ attack: 0
+ inlight: 0
+ attackScream: 0
+--- !u!95 &1997809339
+Animator:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1997809337}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: 7bb101ef536f7f5488216135a0b67dbb, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
+--- !u!1 &2014265735
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2014265736}
+ - component: {fileID: 2014265738}
+ - component: {fileID: 2014265737}
+ m_Layer: 5
+ m_Name: Title
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2014265736
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014265735}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0.000011921}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 958616756}
+ 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.000015259, y: 127}
+ m_SizeDelta: {x: 563.32, y: 78.5}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2014265737
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014265735}
+ 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: murucsbO noitatS
+ m_isRightToLeft: 1
+ m_fontAsset: {fileID: 11400000, guid: 54538dddc94c4d74ea7a8561e9c8c658, type: 2}
+ m_sharedMaterial: {fileID: 1503351390517901866, guid: 54538dddc94c4d74ea7a8561e9c8c658, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4289901234
+ m_fontColor: {r: 0.6981132, g: 0.6981132, b: 0.6981132, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 1
+ m_fontColorGradient:
+ topLeft: {r: 0, g: 0, b: 0, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 0, g: 0, b: 0, 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: 54.9
+ m_fontSizeBase: 36
+ m_fontWeight: 400
+ m_enableAutoSizing: 1
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 1
+ m_HorizontalAlignment: 1
+ 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!222 &2014265738
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2014265735}
+ m_CullTransparentMesh: 1
--- !u!1 &2049228921
GameObject:
m_ObjectHideFlags: 0
@@ -8369,6 +9802,123 @@ MeshFilter:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2100760519}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!1 &2124066739 stripped
+GameObject:
+ m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: d7052a575d103224a9a4e9e61043aebd, type: 3}
+ m_PrefabInstance: {fileID: 1502346880}
+ m_PrefabAsset: {fileID: 0}
+--- !u!114 &2124066743
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2124066739}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 33ef93bdb1481e341ab083f8146e3624, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ globalRotation: {x: 0, y: 0, z: 0}
+ localRotation: {x: 0, y: 1, z: 0}
+--- !u!1 &2125325361
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2125325362}
+ - component: {fileID: 2125325365}
+ - component: {fileID: 2125325364}
+ - component: {fileID: 2125325363}
+ m_Layer: 0
+ m_Name: Cylinder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2125325362
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2125325361}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1.4316, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 597373128}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!136 &2125325363
+CapsuleCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2125325361}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ m_Radius: 0.5000001
+ m_Height: 2
+ m_Direction: 1
+ m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697}
+--- !u!23 &2125325364
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2125325361}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RayTraceProcedural: 0
+ m_RenderingLayerMask: 257
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 5ae9755bd5f22e842891e2044ce16250, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+ m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &2125325365
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2125325361}
+ m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &2134873909
GameObject:
m_ObjectHideFlags: 0
@@ -8571,13 +10121,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2134873909}
- m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
- m_LocalPosition: {x: 1.686, y: 1.05, z: 0.55}
+ m_LocalRotation: {x: -0, y: 0.7071068, z: -0, w: 0.7071068}
+ m_LocalPosition: {x: -2.48, y: 0.32, z: -0.22}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
- m_Father: {fileID: 0}
- m_RootOrder: 10
+ m_Father: {fileID: 517652800}
+ m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
--- !u!4 &24249216276517950
Transform:
@@ -10115,8 +11665,8 @@ MeshRenderer:
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- - {fileID: 4874126678125670354, guid: 63d8273e095d54643b5ee5ff97691008, type: 3}
- - {fileID: -876546973899608171, guid: 63d8273e095d54643b5ee5ff97691008, type: 3}
+ - {fileID: 2100000, guid: e1fe5134720cba140901cf75d1d6080f, type: 2}
+ - {fileID: 2100000, guid: e1fe5134720cba140901cf75d1d6080f, type: 2}
- {fileID: -6922793697723135513, guid: 63d8273e095d54643b5ee5ff97691008, type: 3}
- {fileID: -6629797300637803691, guid: 63d8273e095d54643b5ee5ff97691008, type: 3}
- {fileID: -3846018093981099296, guid: 63d8273e095d54643b5ee5ff97691008, type: 3}
@@ -11503,15 +13053,15 @@ MeshRenderer:
m_RendererPriority: 0
m_Materials:
- {fileID: 3970376564689626660, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -3846018093981099296, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
+ - {fileID: 2100000, guid: a126f9b19164e6a45b3cd3c77c01a8dd, type: 2}
- {fileID: 2100000, guid: e0f307656cc348345ad7d0117c4f7162, type: 2}
- - {fileID: 4874126678125670354, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -6922793697723135513, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -6629797300637803691, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -2813467912831258332, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -8274133419916619345, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -3522955778539423533, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: 9185737683893222716, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
+ - {fileID: 2100000, guid: 4a66a32842fae9144992865383b2c4d2, type: 2}
+ - {fileID: 2100000, guid: 4a66a32842fae9144992865383b2c4d2, type: 2}
+ - {fileID: 2100000, guid: e0f307656cc348345ad7d0117c4f7162, type: 2}
+ - {fileID: 2100000, guid: 4a66a32842fae9144992865383b2c4d2, type: 2}
+ - {fileID: 2100000, guid: 8462b61ec2c60754e8de171be5734513, type: 2}
+ - {fileID: 2100000, guid: dfa2e96905659c043865d325d011d55d, type: 2}
+ - {fileID: 2100000, guid: a9bb64fcadb263d4fa547e3e4d7ee077, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -11623,6 +13173,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 7835394858105576877}
+ - component: {fileID: 7835394858105576878}
m_Layer: 0
m_Name: Armature
m_TagString: Untagged
@@ -12762,8 +14313,8 @@ MeshRenderer:
m_RenderingLayerMask: 257
m_RendererPriority: 0
m_Materials:
- - {fileID: -7428245812776736338, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- - {fileID: -4973734387028869240, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
+ - {fileID: 2100000, guid: 4a66a32842fae9144992865383b2c4d2, type: 2}
+ - {fileID: 2100000, guid: 4a66a32842fae9144992865383b2c4d2, type: 2}
- {fileID: -6087771358165109452, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
- {fileID: 7430301218579858670, guid: f37c7d4b28cd11d4490b820b932dda6d, type: 3}
m_StaticBatchInfo:
@@ -14172,7 +15723,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &5928272533553725978
Transform:
m_ObjectHideFlags: 0
@@ -14365,13 +15916,13 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5928272534007153585}
m_LocalRotation: {x: -0, y: -0.7843846, z: -0, w: 0.62027484}
- m_LocalPosition: {x: 4.311122, y: 1.13, z: 1.2134178}
+ m_LocalPosition: {x: -0.6688781, y: -0.09000003, z: -0.8185202}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2009611069071915912}
- m_Father: {fileID: 0}
- m_RootOrder: 1
+ m_Father: {fileID: 517652800}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: -103.328, z: 0}
--- !u!1 &5930905887968882412
GameObject:
@@ -14683,7 +16234,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
+ m_IsActive: 0
--- !u!4 &6292843528421381447
Transform:
m_ObjectHideFlags: 0
@@ -16141,6 +17692,26 @@ Transform:
m_Father: {fileID: 2777679642920917830}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!95 &7835394858105576878
+Animator:
+ serializedVersion: 5
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 3268472216237051378}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: 5f063742de007154abe81cfc7508d9c1, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
--- !u!4 &7847349079004362726
Transform:
m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/Experimental/TestAnimationParameters.cs b/Assets/Scripts/Experimental/TestAnimationParameters.cs
new file mode 100644
index 0000000..9fb86cd
--- /dev/null
+++ b/Assets/Scripts/Experimental/TestAnimationParameters.cs
@@ -0,0 +1,44 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class TestAnimationParameters : MonoBehaviour
+{
+ private Animator animator;
+ [SerializeField]
+ private float speed = 0;
+ [SerializeField]
+ private int attackIndex = 0;
+ [SerializeField]
+ private int attack = 0;
+ private int pattack = -1;
+ [SerializeField]
+ private bool inlight = false;
+ [SerializeField]
+ private int attackScream = 0;
+ private int pAttackScream = -1;
+
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ animator= GetComponent();
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ animator.SetFloat("Speed", speed);
+ animator.SetInteger("AttackIndex", attackIndex);
+ if (Input.GetKeyDown(KeyCode.Tab)){
+ animator.SetTrigger("Attack");
+ pattack = attack;
+ };
+ animator.SetBool("InLight", inlight);
+ if (Input.GetKeyDown(KeyCode.Space))
+ {
+ animator.SetTrigger("AttackScream");
+ pAttackScream = attackScream;
+ }
+ }
+}
diff --git a/Assets/Scripts/Experimental/TestAnimationParameters.cs.meta b/Assets/Scripts/Experimental/TestAnimationParameters.cs.meta
new file mode 100644
index 0000000..910ddec
--- /dev/null
+++ b/Assets/Scripts/Experimental/TestAnimationParameters.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4ee204cb45a53774fb5bd811472f7be8
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Holograms.meta b/Assets/Scripts/Holograms.meta
new file mode 100644
index 0000000..66474a3
--- /dev/null
+++ b/Assets/Scripts/Holograms.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a1645cf9585f37f4bbf00d3b7e69c4f2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Holograms/RotatingHologram.cs b/Assets/Scripts/Holograms/RotatingHologram.cs
new file mode 100644
index 0000000..d7445f6
--- /dev/null
+++ b/Assets/Scripts/Holograms/RotatingHologram.cs
@@ -0,0 +1,24 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class RotatingHologram : MonoBehaviour
+{
+ [SerializeField]
+ private Vector3 globalRotation= Vector3.zero;
+ [SerializeField]
+ private Vector3 localRotation = Vector3.zero;
+
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+ this.transform.eulerAngles += globalRotation * Time.deltaTime;
+ this.transform.Rotate(localRotation* Time.deltaTime);
+ }
+}
diff --git a/Assets/Scripts/Holograms/RotatingHologram.cs.meta b/Assets/Scripts/Holograms/RotatingHologram.cs.meta
new file mode 100644
index 0000000..fda89f2
--- /dev/null
+++ b/Assets/Scripts/Holograms/RotatingHologram.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 33ef93bdb1481e341ab083f8146e3624
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/MainMenu.meta b/Assets/Scripts/MainMenu.meta
new file mode 100644
index 0000000..8687a08
--- /dev/null
+++ b/Assets/Scripts/MainMenu.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 941a086bc9f61174fad5641e069b84aa
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/MainMenu/MainMenuManager.cs b/Assets/Scripts/MainMenu/MainMenuManager.cs
new file mode 100644
index 0000000..44c07ff
--- /dev/null
+++ b/Assets/Scripts/MainMenu/MainMenuManager.cs
@@ -0,0 +1,66 @@
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using TMPro;
+using UnityEngine;
+using UnityEngine.UI;
+using UnityEngine.SceneManagement;
+
+public class MainMenuManager : MonoBehaviour
+{
+ private string component = "_FaceDilate";
+ [SerializeField]
+ private TMP_Text title;
+ [SerializeField]
+ private List textList= new List();
+ private List initDilates= new List();
+ private List dilates= new List();
+ private float dilate = -1;
+ private float initDilate;
+ [SerializeField]
+ float dilateSpeed = 0.1f;
+
+ // Start is called before the first frame update
+ void Start()
+ {
+ //initDilate = title.fontSharedMaterials[0].GetFloat(component);
+ initDilate = title.fontMaterials[0].GetFloat(component);
+ print(initDilate);
+
+ foreach(TMP_Text text in this.textList)
+ {
+ this.initDilates.Add(text.fontMaterials[0].GetFloat(component));
+ this.dilates.Add(-1f);
+
+
+ }
+ this.textList[0].GetComponent().onClick.AddListener(LoadFirstLevel);
+ this.textList[2].GetComponent().onClick.AddListener(ExitApp);
+ print(this.initDilates.Count);
+ print(this.dilates.Count);
+ }
+ void LoadFirstLevel()
+ {
+ SceneManager.LoadScene(1);
+ }
+ void ExitApp()
+ {
+ Application.Quit();
+ }
+
+
+ // Update is called once per frame
+ void Update()
+ {
+ //dilate = Mathf.Min(initDilate, dilate += Time.deltaTime);
+ dilate = Mathf.Lerp(dilate, initDilate, Time.deltaTime*dilateSpeed);
+ title.fontMaterials[0].SetFloat(component, dilate);
+ for(int i =0;i