Skip to content

Commit ce642f5

Browse files
committed
Clean up
1 parent 7078e11 commit ce642f5

File tree

6 files changed

+29
-122
lines changed

6 files changed

+29
-122
lines changed

include/irr/asset/IAssetLoader.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ class IAssetLoader : public virtual core::IReferenceCounted
244244
//! Loads an asset from an opened file, returns nullptr in case of failure.
245245
virtual SAssetBundle loadAsset(io::IReadFile* _file, const SAssetLoadParams& _params, IAssetLoaderOverride* _override = nullptr, uint32_t _hierarchyLevel = 0u) = 0;
246246

247+
virtual void initialize() {}
248+
247249
protected:
248250
// accessors for loaders
249251
SAssetBundle interm_getAssetInHierarchy(IAssetManager* _mgr, io::IReadFile* _file, const std::string& _supposedFilename, const IAssetLoader::SAssetLoadParams& _params, uint32_t _hierarchyLevel, IAssetLoader::IAssetLoaderOverride* _override);

src/irr/asset/CGraphicsPipelineLoaderMTL.cpp

Lines changed: 16 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -171,35 +171,24 @@ CGraphicsPipelineLoaderMTL::CGraphicsPipelineLoaderMTL(IAssetManager* _am) : m_a
171171
registerShader(IRR_CORE_UNIQUE_STRING_LITERAL_TYPE(FRAG_SHADER_UV_CACHE_KEY){},ICPUSpecializedShader::ESS_FRAGMENT);
172172

173173

174-
constexpr const char* MISSING_MTL_PIPELINE_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline";
175-
auto default_texture_file = m_assetMgr->getFileSystem()->createMemoryReadFile(MISSING_CHECKERBOARD_TEXTURE_CONTENT, sizeof(MISSING_CHECKERBOARD_TEXTURE_CONTENT), "checkerboard.png");
174+
175+
}
176176

177+
void CGraphicsPipelineLoaderMTL::initialize()
178+
{
179+
constexpr const char* MISSING_MTL_PIPELINE_NO_UV_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline_no_uv";
180+
constexpr const char* MISSING_MTL_PIPELINE_UV_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline_uv";
177181
SAssetLoadParams assetLoadParams;
178-
auto imageBundle = m_assetMgr->getAsset(default_texture_file, std::string("checkerboard.png"), assetLoadParams);
179-
auto image = core::smart_refctd_ptr_dynamic_cast<ICPUImage>(imageBundle.getContents().begin()[0]);
180-
default_texture_file->drop();
181-
ICPUImageView::SCreationParams viewParams;
182-
{
183-
viewParams.flags = static_cast<ICPUImageView::E_CREATE_FLAGS>(0u);
184-
viewParams.format = EF_UNKNOWN;
185-
viewParams.viewType = IImageView<ICPUImage>::ET_2D;
186-
viewParams.subresourceRange.baseArrayLayer = 0u;
187-
viewParams.subresourceRange.layerCount = 1u;
188-
viewParams.subresourceRange.baseMipLevel = 0u;
189-
viewParams.subresourceRange.levelCount = 1u;
190-
viewParams.image = std::move(image);
191-
}
192-
auto imageView = ICPUImageView::create(std::move(viewParams));
193-
SAssetBundle imageViewBundle{ imageView };
194-
m_assetMgr->changeAssetKey(imageViewBundle, MISSING_CHECKERBOARD_TEXTURE_CACHE_KEY);
195-
m_assetMgr->insertAssetIntoCache(imageViewBundle);
196-
182+
197183
auto default_mtl_file = m_assetMgr->getFileSystem()->createMemoryReadFile(DUMMY_MTL_CONTENT, strlen(DUMMY_MTL_CONTENT), "default IrrlichtBAW material");
198184
auto bundle = loadAsset(default_mtl_file, assetLoadParams);
199-
auto pipelinePtr = static_cast< ICPURenderpassIndependentPipeline*>( bundle.getContents().begin()->get());
185+
auto pipelineAssets = bundle.getContents().begin();
200186
default_mtl_file->drop();
201-
auto p = core::smart_refctd_ptr<ICPURenderpassIndependentPipeline>(pipelinePtr);
202-
insertPipelineIntoCache(std::move(p), MISSING_MTL_PIPELINE_CACHE_KEY, m_assetMgr);
187+
auto pNoUV = core::smart_refctd_ptr_dynamic_cast<ICPURenderpassIndependentPipeline>(pipelineAssets[0]);
188+
auto pUV = core::smart_refctd_ptr_dynamic_cast<ICPURenderpassIndependentPipeline>(pipelineAssets[1]);
189+
190+
insertPipelineIntoCache(std::move(pNoUV), MISSING_MTL_PIPELINE_NO_UV_CACHE_KEY, m_assetMgr);
191+
insertPipelineIntoCache(std::move(pUV), MISSING_MTL_PIPELINE_UV_CACHE_KEY, m_assetMgr);
203192
}
204193

205194
bool CGraphicsPipelineLoaderMTL::isALoadableFileFormat(io::IReadFile* _file) const
@@ -361,7 +350,7 @@ SAssetBundle CGraphicsPipelineLoaderMTL::loadAsset(io::IReadFile* _file, const I
361350

362351
core::smart_refctd_ptr<ICPUDescriptorSet> ds3;
363352
{
364-
const std::string dsCacheKey = std::string(fullName.c_str()) + "?" + materials[i].name + "?_ds";
353+
const std::string dsCacheKey = std::string(fullName.c_str()) + "?" + materials[i].name + "?_ds";
365354
if (_override)
366355
{
367356
const asset::IAsset::E_TYPE types[]{ asset::IAsset::ET_DESCRIPTOR_SET, (asset::IAsset::E_TYPE)0u };
@@ -381,12 +370,11 @@ SAssetBundle CGraphicsPipelineLoaderMTL::loadAsset(io::IReadFile* _file, const I
381370
}
382371
else
383372
{
384-
const asset::IAsset::E_TYPE types[]{ asset::IAsset::ET_DESCRIPTOR_SET, (asset::IAsset::E_TYPE)0u };
385373
SAssetLoadParams assetloadparams;
386-
auto default_imageview_bundle = m_assetMgr->getAsset(dsCacheKey, assetloadparams);
374+
auto default_imageview_bundle = m_assetMgr->getAsset("irr/builtin/image_views/dummy2d", assetloadparams);
387375
if (!default_imageview_bundle.isEmpty())
388376
{
389-
auto assetptr = core::smart_refctd_ptr_dynamic_cast<ICPUImageView>(default_imageview_bundle.getContents().begin()[0]);
377+
auto assetptr = core::smart_refctd_ptr_static_cast<ICPUImageView>(default_imageview_bundle.getContents().begin()[0]);
390378
image_views_set_t views;
391379
views[0] = assetptr;
392380
ds3 = makeDescSet(std::move(views), layout->getDescriptorSetLayout(3u));

src/irr/asset/CGraphicsPipelineLoaderMTL.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ namespace asset
3535
public:
3636
CGraphicsPipelineLoaderMTL(IAssetManager* _am);
3737

38+
void initialize();
39+
3840
bool isALoadableFileFormat(io::IReadFile* _file) const override;
3941

4042
const char** getAssociatedFileExtensions() const override

src/irr/asset/COBJMeshFileLoader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ static core::smart_refctd_ptr<AssetType> getDefaultAsset(const char* _key, IAsse
5050

5151
static const uint32_t WORD_BUFFER_LENGTH = 512;
5252

53-
constexpr const char* MISSING_MTL_PIPELINE_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline";
54-
53+
constexpr const char* MISSING_MTL_PIPELINE_NO_UV_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline_no_uv";
54+
constexpr const char* MISSING_MTL_PIPELINE_UV_CACHE_KEY = "irr/builtin/graphics_pipeline/loaders/mtl/missing_material_pipeline_uv";
5555
constexpr uint32_t POSITION = 0u;
5656
constexpr uint32_t UV = 2u;
5757
constexpr uint32_t NORMAL = 3u;
@@ -416,7 +416,7 @@ asset::SAssetBundle COBJMeshFileLoader::loadAsset(io::IReadFile* _file, const as
416416
//if there's no pipeline for this meshbuffer, set dummy one
417417
if (!submeshes[i]->getPipeline())
418418
{
419-
auto pipeline = getDefaultAsset<ICPURenderpassIndependentPipeline, IAsset::ET_RENDERPASS_INDEPENDENT_PIPELINE>(MISSING_MTL_PIPELINE_CACHE_KEY, AssetManager);
419+
auto pipeline = getDefaultAsset<ICPURenderpassIndependentPipeline, IAsset::ET_RENDERPASS_INDEPENDENT_PIPELINE>(hasUV? MISSING_MTL_PIPELINE_UV_CACHE_KEY: MISSING_MTL_PIPELINE_NO_UV_CACHE_KEY, AssetManager);
420420
submeshes[i]->setPipeline(std::move(pipeline));
421421
}
422422
}

src/irr/asset/IAssetManager.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,12 @@ void IAssetManager::addLoadersAndWriters()
180180
#ifdef _IRR_COMPILE_WITH_GLI_WRITER_
181181
addAssetWriter(core::make_smart_refctd_ptr<asset::CGLIWriter>());
182182
#endif
183+
184+
185+
for (size_t i = 0; i < m_loaders.vector.size(); i++)
186+
{
187+
m_loaders.vector[i]->initialize();
188+
}
183189
}
184190

185191

src/irr/builtin/MTLdefaults.h

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -12,94 +12,3 @@ newmtl defaultMaterial
1212
Ke 0.0000 0.0000 0.0000
1313
map_Kd missing_checkerboard_texture.png
1414
==)";
15-
constexpr const char* MISSING_CHECKERBOARD_TEXTURE_CACHE_KEY = "default IrrlichtBAW material?defaultMaterial?_ds";
16-
17-
//Magenta and black checkerboard texture, encoded to .png
18-
constexpr uint8_t MISSING_CHECKERBOARD_TEXTURE_CONTENT[] = {
19-
0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A, 0x00, 0x00, 0x00, 0x0D, 0x49, 0x48, 0x44, 0x52,
20-
0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x08, 0x02, 0x00, 0x00, 0x00, 0xFD, 0xD4, 0x9A,
21-
0x73, 0x00, 0x00, 0x00, 0x09, 0x70, 0x48, 0x59, 0x73, 0x00, 0x00, 0x0B, 0x13, 0x00, 0x00, 0x0B,
22-
0x13, 0x01, 0x00, 0x9A, 0x9C, 0x18, 0x00, 0x00, 0x04, 0xF3, 0x69, 0x54, 0x58, 0x74, 0x58, 0x4D,
23-
0x4C, 0x3A, 0x63, 0x6F, 0x6D, 0x2E, 0x61, 0x64, 0x6F, 0x62, 0x65, 0x2E, 0x78, 0x6D, 0x70, 0x00,
24-
0x00, 0x00, 0x00, 0x00, 0x3C, 0x3F, 0x78, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x62, 0x65,
25-
0x67, 0x69, 0x6E, 0x3D, 0x22, 0xEF, 0xBB, 0xBF, 0x22, 0x20, 0x69, 0x64, 0x3D, 0x22, 0x57, 0x35,
26-
0x4D, 0x30, 0x4D, 0x70, 0x43, 0x65, 0x68, 0x69, 0x48, 0x7A, 0x72, 0x65, 0x53, 0x7A, 0x4E, 0x54,
27-
0x63, 0x7A, 0x6B, 0x63, 0x39, 0x64, 0x22, 0x3F, 0x3E, 0x20, 0x3C, 0x78, 0x3A, 0x78, 0x6D, 0x70,
28-
0x6D, 0x65, 0x74, 0x61, 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3A, 0x78, 0x3D, 0x22, 0x61, 0x64,
29-
0x6F, 0x62, 0x65, 0x3A, 0x6E, 0x73, 0x3A, 0x6D, 0x65, 0x74, 0x61, 0x2F, 0x22, 0x20, 0x78, 0x3A,
30-
0x78, 0x6D, 0x70, 0x74, 0x6B, 0x3D, 0x22, 0x41, 0x64, 0x6F, 0x62, 0x65, 0x20, 0x58, 0x4D, 0x50,
31-
0x20, 0x43, 0x6F, 0x72, 0x65, 0x20, 0x35, 0x2E, 0x36, 0x2D, 0x63, 0x31, 0x34, 0x35, 0x20, 0x37,
32-
0x39, 0x2E, 0x31, 0x36, 0x33, 0x34, 0x39, 0x39, 0x2C, 0x20, 0x32, 0x30, 0x31, 0x38, 0x2F, 0x30,
33-
0x38, 0x2F, 0x31, 0x33, 0x2D, 0x31, 0x36, 0x3A, 0x34, 0x30, 0x3A, 0x32, 0x32, 0x20, 0x20, 0x20,
34-
0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x3E, 0x20, 0x3C, 0x72, 0x64, 0x66, 0x3A, 0x52, 0x44, 0x46,
35-
0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3A, 0x72, 0x64, 0x66, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70,
36-
0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x33, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x31, 0x39,
37-
0x39, 0x39, 0x2F, 0x30, 0x32, 0x2F, 0x32, 0x32, 0x2D, 0x72, 0x64, 0x66, 0x2D, 0x73, 0x79, 0x6E,
38-
0x74, 0x61, 0x78, 0x2D, 0x6E, 0x73, 0x23, 0x22, 0x3E, 0x20, 0x3C, 0x72, 0x64, 0x66, 0x3A, 0x44,
39-
0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 0x64, 0x66, 0x3A, 0x61,
40-
0x62, 0x6F, 0x75, 0x74, 0x3D, 0x22, 0x22, 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3A, 0x78, 0x6D,
41-
0x70, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6E, 0x73, 0x2E, 0x61, 0x64, 0x6F,
42-
0x62, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x78, 0x61, 0x70, 0x2F, 0x31, 0x2E, 0x30, 0x2F, 0x22,
43-
0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3A, 0x64, 0x63, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A,
44-
0x2F, 0x2F, 0x70, 0x75, 0x72, 0x6C, 0x2E, 0x6F, 0x72, 0x67, 0x2F, 0x64, 0x63, 0x2F, 0x65, 0x6C,
45-
0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2F, 0x31, 0x2E, 0x31, 0x2F, 0x22, 0x20, 0x78, 0x6D, 0x6C,
46-
0x6E, 0x73, 0x3A, 0x78, 0x6D, 0x70, 0x4D, 0x4D, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F,
47-
0x2F, 0x6E, 0x73, 0x2E, 0x61, 0x64, 0x6F, 0x62, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x78, 0x61,
48-
0x70, 0x2F, 0x31, 0x2E, 0x30, 0x2F, 0x6D, 0x6D, 0x2F, 0x22, 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73,
49-
0x3A, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6E,
50-
0x73, 0x2E, 0x61, 0x64, 0x6F, 0x62, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x78, 0x61, 0x70, 0x2F,
51-
0x31, 0x2E, 0x30, 0x2F, 0x73, 0x54, 0x79, 0x70, 0x65, 0x2F, 0x52, 0x65, 0x73, 0x6F, 0x75, 0x72,
52-
0x63, 0x65, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x23, 0x22, 0x20, 0x78, 0x6D, 0x6C, 0x6E, 0x73, 0x3A,
53-
0x70, 0x68, 0x6F, 0x74, 0x6F, 0x73, 0x68, 0x6F, 0x70, 0x3D, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3A,
54-
0x2F, 0x2F, 0x6E, 0x73, 0x2E, 0x61, 0x64, 0x6F, 0x62, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70,
55-
0x68, 0x6F, 0x74, 0x6F, 0x73, 0x68, 0x6F, 0x70, 0x2F, 0x31, 0x2E, 0x30, 0x2F, 0x22, 0x20, 0x78,
56-
0x6D, 0x70, 0x3A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6F, 0x72, 0x54, 0x6F, 0x6F, 0x6C, 0x3D, 0x22,
57-
0x41, 0x64, 0x6F, 0x62, 0x65, 0x20, 0x50, 0x68, 0x6F, 0x74, 0x6F, 0x73, 0x68, 0x6F, 0x70, 0x20,
58-
0x43, 0x43, 0x20, 0x32, 0x30, 0x31, 0x39, 0x20, 0x28, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73,
59-
0x29, 0x22, 0x20, 0x78, 0x6D, 0x70, 0x3A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74,
60-
0x65, 0x3D, 0x22, 0x32, 0x30, 0x32, 0x30, 0x2D, 0x30, 0x38, 0x2D, 0x32, 0x30, 0x54, 0x32, 0x30,
61-
0x3A, 0x31, 0x38, 0x3A, 0x31, 0x30, 0x2B, 0x30, 0x32, 0x3A, 0x30, 0x30, 0x22, 0x20, 0x78, 0x6D,
62-
0x70, 0x3A, 0x4D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x44, 0x61, 0x74, 0x65, 0x3D, 0x22,
63-
0x32, 0x30, 0x32, 0x30, 0x2D, 0x30, 0x38, 0x2D, 0x32, 0x30, 0x54, 0x32, 0x30, 0x3A, 0x31, 0x38,
64-
0x3A, 0x31, 0x30, 0x2B, 0x30, 0x32, 0x3A, 0x30, 0x30, 0x22, 0x20, 0x78, 0x6D, 0x70, 0x3A, 0x4D,
65-
0x6F, 0x64, 0x69, 0x66, 0x79, 0x44, 0x61, 0x74, 0x65, 0x3D, 0x22, 0x32, 0x30, 0x32, 0x30, 0x2D,
66-
0x30, 0x38, 0x2D, 0x32, 0x30, 0x54, 0x32, 0x30, 0x3A, 0x31, 0x38, 0x3A, 0x31, 0x30, 0x2B, 0x30,
67-
0x32, 0x3A, 0x30, 0x30, 0x22, 0x20, 0x64, 0x63, 0x3A, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3D,
68-
0x22, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2F, 0x70, 0x6E, 0x67, 0x22, 0x20, 0x78, 0x6D, 0x70, 0x4D,
69-
0x4D, 0x3A, 0x49, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x49, 0x44, 0x3D, 0x22, 0x78, 0x6D,
70-
0x70, 0x2E, 0x69, 0x69, 0x64, 0x3A, 0x66, 0x64, 0x64, 0x66, 0x30, 0x37, 0x39, 0x33, 0x2D, 0x64,
71-
0x63, 0x37, 0x32, 0x2D, 0x31, 0x35, 0x34, 0x66, 0x2D, 0x61, 0x62, 0x61, 0x61, 0x2D, 0x62, 0x39,
72-
0x64, 0x61, 0x38, 0x38, 0x64, 0x34, 0x64, 0x31, 0x39, 0x63, 0x22, 0x20, 0x78, 0x6D, 0x70, 0x4D,
73-
0x4D, 0x3A, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x49, 0x44, 0x3D, 0x22, 0x78, 0x6D,
74-
0x70, 0x2E, 0x64, 0x69, 0x64, 0x3A, 0x66, 0x64, 0x64, 0x66, 0x30, 0x37, 0x39, 0x33, 0x2D, 0x64,
75-
0x63, 0x37, 0x32, 0x2D, 0x31, 0x35, 0x34, 0x66, 0x2D, 0x61, 0x62, 0x61, 0x61, 0x2D, 0x62, 0x39,
76-
0x64, 0x61, 0x38, 0x38, 0x64, 0x34, 0x64, 0x31, 0x39, 0x63, 0x22, 0x20, 0x78, 0x6D, 0x70, 0x4D,
77-
0x4D, 0x3A, 0x4F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65,
78-
0x6E, 0x74, 0x49, 0x44, 0x3D, 0x22, 0x78, 0x6D, 0x70, 0x2E, 0x64, 0x69, 0x64, 0x3A, 0x66, 0x64,
79-
0x64, 0x66, 0x30, 0x37, 0x39, 0x33, 0x2D, 0x64, 0x63, 0x37, 0x32, 0x2D, 0x31, 0x35, 0x34, 0x66,
80-
0x2D, 0x61, 0x62, 0x61, 0x61, 0x2D, 0x62, 0x39, 0x64, 0x61, 0x38, 0x38, 0x64, 0x34, 0x64, 0x31,
81-
0x39, 0x63, 0x22, 0x20, 0x70, 0x68, 0x6F, 0x74, 0x6F, 0x73, 0x68, 0x6F, 0x70, 0x3A, 0x43, 0x6F,
82-
0x6C, 0x6F, 0x72, 0x4D, 0x6F, 0x64, 0x65, 0x3D, 0x22, 0x33, 0x22, 0x3E, 0x20, 0x3C, 0x78, 0x6D,
83-
0x70, 0x4D, 0x4D, 0x3A, 0x48, 0x69, 0x73, 0x74, 0x6F, 0x72, 0x79, 0x3E, 0x20, 0x3C, 0x72, 0x64,
84-
0x66, 0x3A, 0x53, 0x65, 0x71, 0x3E, 0x20, 0x3C, 0x72, 0x64, 0x66, 0x3A, 0x6C, 0x69, 0x20, 0x73,
85-
0x74, 0x45, 0x76, 0x74, 0x3A, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3D, 0x22, 0x63, 0x72, 0x65,
86-
0x61, 0x74, 0x65, 0x64, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3A, 0x69, 0x6E, 0x73, 0x74,
87-
0x61, 0x6E, 0x63, 0x65, 0x49, 0x44, 0x3D, 0x22, 0x78, 0x6D, 0x70, 0x2E, 0x69, 0x69, 0x64, 0x3A,
88-
0x66, 0x64, 0x64, 0x66, 0x30, 0x37, 0x39, 0x33, 0x2D, 0x64, 0x63, 0x37, 0x32, 0x2D, 0x31, 0x35,
89-
0x34, 0x66, 0x2D, 0x61, 0x62, 0x61, 0x61, 0x2D, 0x62, 0x39, 0x64, 0x61, 0x38, 0x38, 0x64, 0x34,
90-
0x64, 0x31, 0x39, 0x63, 0x22, 0x20, 0x73, 0x74, 0x45, 0x76, 0x74, 0x3A, 0x77, 0x68, 0x65, 0x6E,
91-
0x3D, 0x22, 0x32, 0x30, 0x32, 0x30, 0x2D, 0x30, 0x38, 0x2D, 0x32, 0x30, 0x54, 0x32, 0x30, 0x3A,
92-
0x31, 0x38, 0x3A, 0x31, 0x30, 0x2B, 0x30, 0x32, 0x3A, 0x30, 0x30, 0x22, 0x20, 0x73, 0x74, 0x45,
93-
0x76, 0x74, 0x3A, 0x73, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x41, 0x67, 0x65, 0x6E, 0x74,
94-
0x3D, 0x22, 0x41, 0x64, 0x6F, 0x62, 0x65, 0x20, 0x50, 0x68, 0x6F, 0x74, 0x6F, 0x73, 0x68, 0x6F,
95-
0x70, 0x20, 0x43, 0x43, 0x20, 0x32, 0x30, 0x31, 0x39, 0x20, 0x28, 0x57, 0x69, 0x6E, 0x64, 0x6F,
96-
0x77, 0x73, 0x29, 0x22, 0x2F, 0x3E, 0x20, 0x3C, 0x2F, 0x72, 0x64, 0x66, 0x3A, 0x53, 0x65, 0x71,
97-
0x3E, 0x20, 0x3C, 0x2F, 0x78, 0x6D, 0x70, 0x4D, 0x4D, 0x3A, 0x48, 0x69, 0x73, 0x74, 0x6F, 0x72,
98-
0x79, 0x3E, 0x20, 0x3C, 0x2F, 0x72, 0x64, 0x66, 0x3A, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
99-
0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x20, 0x3C, 0x2F, 0x72, 0x64, 0x66, 0x3A, 0x52, 0x44, 0x46, 0x3E,
100-
0x20, 0x3C, 0x2F, 0x78, 0x3A, 0x78, 0x6D, 0x70, 0x6D, 0x65, 0x74, 0x61, 0x3E, 0x20, 0x3C, 0x3F,
101-
0x78, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x3D, 0x22, 0x72, 0x22, 0x3F,
102-
0x3E, 0x67, 0x6C, 0x4F, 0x9E, 0x00, 0x00, 0x00, 0x12, 0x49, 0x44, 0x41, 0x54, 0x08, 0x99, 0x63,
103-
0x78, 0xC5, 0xF0, 0x9F, 0x01, 0x02, 0x5E, 0x31, 0xFC, 0x07, 0x00, 0x1A, 0xA2, 0x03, 0xD3, 0xD4,
104-
0x8B, 0xF5, 0x10, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4E, 0x44, 0xAE, 0x42, 0x60, 0x82,
105-
};

0 commit comments

Comments
 (0)