
    <html>
      <head>
        <link rel="preconnect" href="https://trendpartner-stg.powerappsportals.com" crossorigin>
        <link rel="dns-prefetch" href="https://trendpartner-stg.powerappsportals.com" >

        <base href="https://trendpartner-stg.powerappsportals.com" />

        <!-- Render the bootstrap file -->
        <link rel="stylesheet" href="data:text/css;base64,aDEgewp9Cg==" >
        
      <!-- Render runtime js resources from CDN -->
      
      <!-- Render runtime css resources from CDN -->
      
        <link href="https://content.powerapps.com/resource/powerappsportal/dist/preform.bundle-fe8dae6843.css" rel="stylesheet" />
      
        <link href="https://content.powerapps.com/resource/powerappsportal/dist/font-awesome.bundle-3d8a58a48f.css" rel="stylesheet" />
      

        <!-- Render all other css files -->
        
          <link rel="stylesheet" href="data:text/css;base64,QGxheWVyIGJhc2UsIGNvbXBvbmVudCwgdXRpbGl0aWVzOwoKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcnN0YXRlJzsKICBzcmM6IHVybCgnL2ludGVyc3RhdGUtcmVndWxhci5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwp9CgpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ0ludGVyc3RhdGUgQm9sZCc7CiAgc3JjOiB1cmwoJy9pbnRlcnN0YXRlLWJvbGQub3RmJykgZm9ybWF0KCdvcGVudHlwZScpOwogIGZvbnQtZGlzcGxheTogc3dhcDsKfQoKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcnN0YXRlIExpZ2h0JzsKICBzcmM6IHVybCgnL2ludGVyc3RhdGUtbGlnaHQub3RmJykgZm9ybWF0KCdvcGVudHlwZScpOwogIGZvbnQtZGlzcGxheTogc3dhcDsKfQoKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdJbnRlcnN0YXRlIExpZ2h0IEl0YWxpYyc7CiAgc3JjOiB1cmwoJy9pbnRlcnN0YXRlLWxpZ2h0LWl0YWxpYy5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7CiAgZm9udC1kaXNwbGF5OiBzd2FwOwp9CgpAZm9udC1mYWNlIHsKICBmb250LWZhbWlseTogJ09wZW4gU2Fucyc7CiAgc3JjOiB1cmwoJy9vcGVuc2Fucy1yZWd1bGFyLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTsKICBmb250LWRpc3BsYXk6IHN3YXA7Cn0KCkBmb250LWZhY2UgewogIGZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zIFNlbWkgQm9sZCc7CiAgc3JjOiB1cmwoJy9vcGVuc2Fucy1zZW1pLWJvbGQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpOwogIGZvbnQtZGlzcGxheTogc3dhcDsKfQoKQGZvbnQtZmFjZSB7CiAgZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMgQm9sZCc7CiAgc3JjOiB1cmwoJy9vcGVuc2Fucy1ib2xkLnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTsKICBmb250LWRpc3BsYXk6IHN3YXA7Cn0KCjpyb290IHsKICAvKiBjb2xvcnMgKi8KICAtLWNsci10cmFuc3BhcmVudDogcmdiYSgwLCAwLCAwLCAwKTsKICAtLWNsci1ibGFjazogIzAwMDAwMDsKICAtLWNsci13aGl0ZTogI2ZmZmZmZjsKCiAgLyogTmV1dHJhbCBDb2xvciAqLwogIC0tY2xyLW5ldXRyYWwtNTA6ICNmY2ZjZmM7CiAgLS1jbHItbmV1dHJhbC0xMDA6ICNmOWY5Zjk7CiAgLS1jbHItbmV1dHJhbC0xMjU6ICNmNWY1ZjU7CiAgLS1jbHItbmV1dHJhbC0xNTA6ICNlNmU2ZTY7CiAgLS1jbHItbmV1dHJhbC0xNzU6ICNmMmYyZjI7CiAgLS1jbHItbmV1dHJhbC0yMDA6ICNkZGRkZGQ7CiAgLS1jbHItbmV1dHJhbC0yNTA6ICNlNmU3ZTg7CiAgLS1jbHItbmV1dHJhbC0zMDA6ICNkOWQ5ZDk7CiAgLS1jbHItbmV1dHJhbC0zNTA6ICNkM2QzZDM7CiAgLS1jbHItbmV1dHJhbC00MDA6ICNiY2JlYzA7CiAgLS1jbHItbmV1dHJhbC00NTA6ICNhN2E5YWM7CgogIC8qIEdyYXkgQ29sb3IgKi8KICAtLWNsci1ncmF5LTMwMDogIzlkOWZhMjsKICAtLWNsci1ncmF5LTQwMDogIzkzOTU5ODsKICAtLWNsci1ncmF5LTQ1MDogIzU4NTk1YjsKICAtLWNsci1ncmF5LTUwMDogIzRkNGQ0ZjsKICAtLWNsci1ncmF5LTU1MDogIzRkNGQ0ZDsKICAtLWNsci1ncmF5LTYwMDogIzM3Mzk0MDsKICAtLWNsci1ncmF5LTY1MDogIzQxNDA0MjsKICAtLWNsci1ncmF5LTkwMDogIzIyMjIyMjsKCiAgLyogR3JlZW4gQ29sb3IgKi8KICAtLWNsci1ncmVlbi01MDogI2U4ZjlmMDsKICAtLWNsci1ncmVlbi0yMDA6ICNjNmUzYmQ7CiAgLS1jbHItZ3JlZW4tNDAwOiAjMDBkMjgxOwogIC0tY2xyLWdyZWVuLTcwMDogIzMxNjQzMTsKCiAgLyogUmVkIENvbG9yICovCiAgLS1jbHItcmVkLTUwOiAjZmRlOGU5OwogIC0tY2xyLXJlZC0yMDA6ICNmNWM0YzY7CiAgLS1jbHItcmVkLTYwMDogI2ZmM2MyMzsKICAtLWNsci1yZWQtNzAwOiAjZDcxOTIwOwogIC0tY2xyLXJlZC03NTA6ICNjYzAwMDA7CiAgLS1jbHItcmVkLTgwMDogI2FhMDAwMDsKCiAgLyogWWVsbG93IENvbG9yICovCiAgLS1jbHIteWVsbG93LTEwMDogI2ZkZjBjMzsKICAtLWNsci15ZWxsb3ctNTAwOiAjZmZiNDJiOwoKICAvKiBCcm93biBDb2xvciAqLwogIC0tY2xyLWJyb3duLTEwMDogI2ZlZDdiNjsKICAtLWNsci1icm93bi02MDA6ICM3ZTUxMjk7CgogIC8qIEJsdWUgQ29sb3IgKi8KICAtLWNsci1za3ktNTA6ICNlYmZhZmQ7CiAgLS1jbHItc2t5LTUwMDogIzU2YTBkMzsKICAtLWNsci1za3ktNTUwOiAjMzNhYmQ2OwogIC0tY2xyLXNreS02MDA6ICMwMDk2Y2M7CiAgLS1jbHItc2t5LTcwMDogIzBlNzNhYzsKICAtLWNsci1za3ktODAwOiAjMDY1Nzg1OwogIC0tY2xyLXNreS05NTA6IHJnYmEoMCwgMTUwLCAyMDQsIDAuMSk7CgogIC8qIGZvbnQtc2l6ZXMgKi8KICAtLWZzLTc1MDogNHJlbTsKICAtLWZzLTcwMDogMy41cmVtOwogIC0tZnMtNjUwOiAyLjVyZW07CiAgLS1mcy02MjU6IDIuMjVyZW07CiAgLS1mcy02MDA6IDJyZW07CiAgLS1mcy01MDA6IDEuNzVyZW07CiAgLS1mcy00MDA6IDEuNXJlbTsKICAtLWZzLTM1MDogMS4yNXJlbTsKICAtLWZzLTMyNTogMS4xMjVyZW07CiAgLS1mcy0zMDA6IDFyZW07CiAgLS1mcy0yMDA6IDAuODc1cmVtOwoKICAvKiBmb250LXdlaWdodCAqLwogIC0tZnctYm9sZDogNzAwOwoKICAvKiBmb250LWZhbWlsaWVzICovCiAgLS1mZi1pbnRlci1saWdodDogJ0ludGVyc3RhdGUgTGlnaHQnLCBzYW5zLXNlcmlmOwogIC0tZmYtaW50ZXI6ICdJbnRlcnN0YXRlJywgc2Fucy1zZXJpZjsKICAtLWZmLWludGVyLWJvbGQ6ICdJbnRlcnN0YXRlIEJvbGQnLCBzYW5zLXNlcmlmOwogIC0tZmYtb3Blbi1zYW5zOiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjsKICAtLWZmLW9wZW4tc2Fucy02MDA6ICdPcGVuIFNhbnMgU2VtaSBCb2xkJywgc2Fucy1zZXJpZjsKICAtLWZmLW9wZW4tc2Fucy03MDA6ICdPcGVuIFNhbnMgQm9sZCcsIHNhbnMtc2VyaWY7CgogIC8qIGJveCBzaGFkb3cgKi8KICAtLWJveC1zaGFkb3ctMTogMHB4IDRweCAxNXB4IHJnYmEoMTk2LCAxOTYsIDE5NiwgMC4zNSk7CiAgLS1ib3gtc2hhZG93LTI6IDBweCA4cHggMjhweCByZ2IoMCAwIDAgLyAyOCUpOwogIC0taW5wdXQtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDApIDBweCAwcHggMHB4IDBweCwKICAgIHJnYmEoMCwgMCwgMCwgMCkgMHB4IDBweCAwcHggMHB4LCByZ2JhKDAsIDAsIDAsIDAuMDUpIDBweCAxcHggMnB4IDBweDsKICAtLWlucHV0LXNoYWRvdy1hY3RpdmU6IHJnYigyNTUsIDI1NSwgMjU1KSAwcHggMHB4IDBweCAwcHgsCiAgICByZ2IoMTYxLCAxNjEsIDE3MCkgMHB4IDBweCAwcHggMXB4LCByZ2JhKDAsIDAsIDAsIDAuMDUpIDBweCAxcHggMnB4IDBweDsKCiAgLyogVHJhbnNpdGlvbnMgcHJvcGVydHkgKi8KICAtLXRyYW5zaXRpb24tZGlzcGxheTogb3BhY2l0eSwgdmlzaWJpbGl0eSwgYmFja2dyb3VuZC1jb2xvcjsKICAtLXRyYW5zaXRpb24tY29sb3JzOiBjb2xvciwgYmFja2dyb3VuZC1jb2xvciwgYm9yZGVyLWNvbG9yLAogICAgdGV4dC1kZWNvcmF0aW9uLWNvbG9yLCBmaWxsLCBzdHJva2U7CiAgLS10cmFuc2l0aW9uLXNoYWRvd3M6IGJveC1zaGFkb3c7CiAgLS10cmFuc2l0aW9uLXRyYW5zZm9ybTogdHJhbnNsYXRlLCByb3RhdGUsIHNjYWxlOwoKICAvKiBUcmFuc2l0aW9ucyBkdXJhdGlvbiAqLwogIC0tZHVyYXRpb24tMTAwOiAxMDBtczsKICAtLWR1cmF0aW9uLTE1MDogMTUwbXM7CiAgLS1kdXJhdGlvbi0yMDA6IDIwMG1zOwogIC0tZHVyYXRpb24tMzAwOiAzMDBtczsKICAtLWR1cmF0aW9uLTQwMDogNDAwbXM7CgogIC8qIFRyYW5zaXRpb25zIHRpbWluZyBmdW5jdGlvbiAqLwogIC0tZWFzZS1saW5lYXI6IGxpbmVhcjsKICAtLWVhc2UtaW46IGN1YmljLWJlemllcigwLjQsIDAsIDEsIDEpOwogIC0tZWFzZS1vdXQ6IGN1YmljLWJlemllcigwLCAwLCAwLjIsIDEpOwogIC0tZWFzZS1pbi1vdXQ6IGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CgogIC8qIGJvcmRlciByYWRpdXMgKi8KICAtLXJvdW5kZWQ6IDAuMjVyZW07CiAgLS1yb3VuZGVkLTY6IDAuMzc1cmVtOwogIC0tcm91bmRlZC04OiAwLjVyZW07CiAgLS1yb3VuZGVkLTIwOiAxLjI1cmVtOwogIC0tcm91bmRlZC1mdWxsOiA5OTk5cHg7CgogIC0tY29udGFpbmVyLXNpemUtOTA6IDkwcmVtOwp9CgpAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1ODBweCkgewogIDpyb290IHsKICAgIC0tZnMtNzUwOiAyLjVyZW07CiAgICAtLWZzLTcwMDogMi41cmVtOwogICAgLS1mcy02NTA6IDJyZW07CiAgICAtLWZzLTYyNTogMnJlbTsKICAgIC0tZnMtNjAwOiAxLjc1cmVtOwogICAgLS1mcy00MDA6IDEuMjVyZW07CiAgICAtLWZzLTM1MDogMXJlbTsKICAgIC0tZnMtMjAwOiAwLjc1cmVtOwogIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLyogVXRpbGl0eSBjbGFzc2VzICovCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiosCio6OmFmdGVyLAoqOjpiZWZvcmUgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCmJvZHkgewogIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgbGluZS1oZWlnaHQ6IDEuNTsKfQoKYm9keS5maXhlZCB7CiAgb3ZlcmZsb3cteTogaGlkZGVuOwp9CgpzdmcsCmltZyB7CiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKfQoKaW1nIHsKICBtYXgtd2lkdGg6IDEwMCU7CiAgaGVpZ2h0OiBhdXRvOwp9CgphIHsKICB1c2VyLXNlbGVjdDogbm9uZTsKICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgY29sb3I6IGluaGVyaXQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIHRyYW5zaXRpb246IDAuMTVzIGVhc2U7Cn0KCmh0bWxbZGlyPSdsdHInXSBsaSBhIHsKICBtYXJnaW4tbGVmdDogdW5zZXQ7Cn0KCnVsLApvbCB7CiAgbGlzdC1zdHlsZS10eXBlOiBub25lOwp9Cgp0YWJsZSB7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKfQoKdGV4dGFyZWEgewogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDFyZW07CiAgcmVzaXplOiB2ZXJ0aWNhbDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItbmV1dHJhbC0zMDApOwogIGJveC1zaGFkb3c6IHZhcigtLWlucHV0LXNoYWRvdyk7Cn0KCmxhYmVsLAppbnB1dCwKYnV0dG9uLAp0ZXh0YXJlYSwKc2VsZWN0IHsKICBtYXJnaW46IDA7CiAgY29sb3I6IGluaGVyaXQ7CiAgZm9udDogaW5oZXJpdDsKICBjdXJzb3I6IGluaGVyaXQ7Cn0KCnRleHRhcmVhLAppbnB1dCB7CiAgb3V0bGluZTogMnB4IHNvbGlkIHRyYW5zcGFyZW50Owp9CgpidXR0b24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICBvdXRsaW5lOiBub25lOwogIHVzZXItc2VsZWN0OiBub25lOwogIHBhZGRpbmc6IDA7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGN1cnNvcjogcG9pbnRlcjsKfQoKaDEsCmgyLApoMywKaDQsCmg1LApoNiwKcCwKdWwsCmhyIHsKICBtYXJnaW46IDA7CiAgcGFkZGluZzogMDsKfQoKQGxheWVyIHV0aWxpdGllcyB7CiAgKlthcmlhLWhpZGRlbj0ndHJ1ZSddIHsKICAgIGRpc3BsYXk6IG5vbmU7CiAgfQp9CgovKiBSZW1vdmUgYW5pbWF0aW9ucyBmb3IgcGVvcGxlIHdobyd2ZSB0dXJuZWQgdGhlbSBvZmYgKi8KQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAqLAogICo6OmJlZm9yZSwKICAqOjphZnRlciB7CiAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50OwogICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OwogICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7CiAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDsKICB9Cn0KCi8qIEFjY2Vzc2liaWxpdHkgZm9yIHNjcmVlbiByZWFkZXIgKi8KLnNyLW9ubHkgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICB3aWR0aDogMXB4OwogIGhlaWdodDogMXB4OwogIHBhZGRpbmc6IDA7CiAgbWFyZ2luOiAtMXB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGJvcmRlcjogMDsKfQoKLnNraXAtdG8tY29udGVudCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHotaW5kZXg6IDk5OTk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKICBjb2xvcjogdmFyKC0tY2xyLWdyYXktOTAwKTsKICBwYWRkaW5nOiAwLjVyZW0gMXJlbTsKICBtYXJnaW4taW5saW5lOiBhdXRvOwogIHRyYW5zbGF0ZTogMCAtMTAwJTsKICB0cmFuc2l0aW9uOiB0cmFuc2xhdGUgMC40cyBlYXNlOwp9Cgouc2tpcC10by1jb250ZW50OmZvY3VzIHsKICB0cmFuc2xhdGU6IDAgMDsKfQoKLyogRGlzcGxheSAqLwouZmxleCB7CiAgZGlzcGxheTogZmxleDsKfQoKLmdyaWQgewogIGRpc3BsYXk6IGdyaWQ7Cn0KCi5ibG9jayB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5pbmxpbmUtYmxvY2sgewogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKfQoKLmZsZXgtY2VudGVyIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5mbGV4LWNvbCB7CiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKfQoKLmZsZXgtd3JhcCB7CiAgZmxleC13cmFwOiB3cmFwOwp9CgouaXRlbXMtc3RhcnQgewogIGFsaWduLWl0ZW1zOiBzdGFydDsKfQoKLml0ZW1zLWNlbnRlciB7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKLml0ZW1zLXN0cmV0Y2ggewogIGFsaWduLWl0ZW1zOiBzdHJldGNoOwp9Cgouc2VsZi1lbmQgewogIGFsaWduLXNlbGY6IGZsZXgtZW5kOwp9Cgouc2VsZi1jZW50ZXIgewogIGFsaWduLXNlbGY6IGNlbnRlcjsKfQoKLnNlbGYtc3RyZXRjaCB7CiAgYWxpZ24tc2VsZjogc3RyZXRjaDsKfQoKLmp1c3RpZnktc3RhcnQgewogIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKfQoKLmp1c3RpZnktZW5kIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kOwp9CgouanVzdGlmeS1iZXR3ZWVuIHsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Cn0KCi5qdXN0aWZ5LWNlbnRlciB7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7Cn0KCi5wbGFjZS1pdGVtcy1jZW50ZXIgewogIHBsYWNlLWl0ZW1zOiBjZW50ZXI7Cn0KCi5nYXAtMSB7CiAgZ2FwOiAwLjI1cmVtOwp9CgouZ2FwLTIgewogIGdhcDogMC41cmVtOwp9CgouZ2FwLTMgewogIGdhcDogMC43NXJlbTsKfQoKLmdhcC00IHsKICBnYXA6IDFyZW07Cn0KCi5nYXAtNSB7CiAgZ2FwOiAxLjI1cmVtOwp9CgouZ2FwLTYgewogIGdhcDogMS41cmVtOwp9CgouZ2FwLTcgewogIGdhcDogMS43NXJlbTsKfQoKLmdhcC04IHsKICBnYXA6IDJyZW07Cn0KCi5wLTQgewogIHBhZGRpbmc6IDFyZW07Cn0KCi8qIFBvc2l0aW9uICovCi5yZWxhdGl2ZSB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwp9CgouYWJzb2x1dGUgewogIHBvc2l0aW9uOiBhYnNvbHV0ZTsKfQoKLmZpeGVkIHsKICBwb3NpdGlvbjogZml4ZWQ7Cn0KCi5zdGlja3kgewogIHBvc2l0aW9uOiBzdGlja3k7Cn0KCi5vdmVyZmxvdy1oaWRkZW4gewogIG92ZXJmbG93OiBoaWRkZW4gIWltcG9ydGFudDsKfQoKLmZsb3cgPiAqOndoZXJlKDpub3QoOmZpcnN0LWNoaWxkKSkgewogIG1hcmdpbi10b3A6IHZhcigtLWZsb3csIDFyZW0pOwp9CgouY29udGFpbmVyIHsKICBmbGV4OiAxIDE7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LXdpZHRoOiAxMjI0cHg7CiAgbWFyZ2luOiAwIGF1dG87Cn0KCi5oaWRkZW4gewogIG9wYWNpdHk6IDA7CiAgdmlzaWJpbGl0eTogaGlkZGVuOwp9Cgoubm9uZSB7CiAgZGlzcGxheTogbm9uZTsKfQoKLmhpZGRlblthcmlhLWhpZGRlbj0nZmFsc2UnXSB7CiAgb3BhY2l0eTogMTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9Cgouc3F1YXJlLXNoYXBlIHsKICB3aWR0aDogdmFyKC0tc2l6ZSwgMXJlbSk7CiAgaGVpZ2h0OiB2YXIoLS1zaXplLCAxcmVtKTsKfQoKLyogQnV0dG9ucyAqLwouYnRuIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgZ2FwOiB2YXIoLS1nYXAsIDAuNXJlbSk7CiAgd2lkdGg6IGZpdC1jb250ZW50OwogIG1pbi1oZWlnaHQ6IDJyZW07CiAgcGFkZGluZy1pbmxpbmU6IDFyZW07CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZCk7CiAgbGluZS1oZWlnaHQ6IDE7CiAgY3Vyc29yOiBwb2ludGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmJ0bjpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMjUwKTsKfQouYnRuLnByaW1hcnkgewogIGNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1yZWQtNzAwKTsKfQouYnRuLnByaW1hcnk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1yZWQtODAwKTsKfQouYnRuLmdob3N0IHsKICBjb2xvcjogdmFyKC0tY2xyLXJlZC03MDApOwp9Ci5idG4uZ2hvc3Q6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTI1MCk7Cn0KLmJ0bi5vdXRsaW5lIHsKICBjb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItd2hpdGUpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1ibGFjayk7Cn0KLmJ0bi5vdXRsaW5lOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItZ3JheS02MDApOwp9Ci5idG4ub3V0bGluZS13aGl0ZSB7CiAgY29sb3I6IHZhcigtLWNsci1ibGFjayk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2xyLWJsYWNrKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwp9Ci5idG4ub3V0bGluZS13aGl0ZTpob3ZlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMTI1KTsKfQouYnRuLm91dGxpbmUtd2hpdGU6ZGlzYWJsZWQsCi5idG4ub3V0bGluZS13aGl0ZS5kaXNhYmxlZCB7CiAgY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTQ1MCk7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jbHItbmV1dHJhbC0yMDApOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSk7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQouYnRuLm91dGxpbmUtd2hpdGVbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIHsKICBib3JkZXItY29sb3I6IHZhcigtLWNsci1ibGFjayk7Cn0KLmJ0bi5vdXRsaW5lLXJlZCB7CiAgY29sb3I6IHZhcigtLWNsci1yZWQtNzAwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItcmVkLTcwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKfQouYnRuLm91dGxpbmUtcmVkOmhvdmVyIHsKICBjb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7Cn0KLmJ0bi5vdXRsaW5lLXJlZDpob3ZlciBwYXRoIHsKICBmaWxsOiB2YXIoLS1jbHItd2hpdGUpOwp9Ci5idG4ub3V0bGluZS1yZWQ6ZGlzYWJsZWQsCi5idG4ub3V0bGluZS1yZWQuZGlzYWJsZWQgewogIGNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKICBvcGFjaXR5OiAwLjQ7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLmJ0bi5vdXRsaW5lLXJlZDpkaXNhYmxlZCBwYXRoLAouYnRuLm91dGxpbmUtcmVkLmRpc2FibGVkIHBhdGggewogIGZpbGw6IHZhcigtLWNsci1yZWQtNzAwKTsKfQoKLyogYmFja2dyb3VuZCBjb2xvcnMgKi8KLmJnLXRyYW5zcGFyZW50IHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItdHJhbnNwYXJlbnQpOwp9Ci5iZy1ibGFjayB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKfQouYmctd2hpdGUgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSk7Cn0KCi5iZy1uZXV0cmFsLTEwMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMTAwKTsKfQouYmctbmV1dHJhbC0yMDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTIwMCk7Cn0KLmJnLW5ldXRyYWwtMjUwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItbmV1dHJhbC0yNTApOwp9Ci5iZy1uZXV0cmFsLTMwMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMzAwKTsKfQouYmctbmV1dHJhbC00MDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTQwMCk7Cn0KCi5iZy1ncmF5LTMwMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLWdyYXktMzAwKTsKfQouYmctZ3JheS00MDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1ncmF5LTQwMCk7Cn0KLmJnLWdyYXktNDUwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItZ3JheS00NTApOwp9CgouYmctZ3JlZW4tNDAwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItZ3JlZW4tNDAwKTsKfQoKLmJnLXllbGxvdy0xMDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci15ZWxsb3ctMTAwKTsKfQouYmctc2t5LTUwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItc2t5LTUwKTsKfQoKLmJnLXNreS02MDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1za3ktNjAwKTsKfQoKLmJnLXJlZC01MCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXJlZC01MCk7Cn0KLmJnLXJlZC02MDAgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1yZWQtNjAwKTsKfQouYmctcmVkLTcwMCB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXJlZC03MDApOwp9Ci5iZy1yZWQtNzUwIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItcmVkLTc1MCk7Cn0KCi8qIFRleHQgY29sb3JzICovCi50ZXh0LWJsYWNrIHsKICBjb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKfQoudGV4dC1ncmF5LTkwMCB7CiAgY29sb3I6IHZhcigtLWNsci1ncmF5LTkwMCk7Cn0KLnRleHQtZ3JheS01MDAgewogIGNvbG9yOiB2YXIoLS1jbHItZ3JheS01MDApOwp9Ci50ZXh0LWdyYXktNDAwIHsKICBjb2xvcjogdmFyKC0tY2xyLWdyYXktNDAwKTsKfQoudGV4dC1ncmF5LTQ1MCB7CiAgY29sb3I6IHZhcigtLWNsci1ncmF5LTQ1MCk7Cn0KLnRleHQtZ3JheS0zMDAgewogIGNvbG9yOiB2YXIoLS1jbHItZ3JheS0zMDApOwp9Ci50ZXh0LWdyYXktNjUwIHsKICBjb2xvcjogdmFyKC0tY2xyLWdyYXktNjUwKTsKfQoudGV4dC13aGl0ZSB7CiAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7Cn0KLnRleHQtc2t5LTYwMCB7CiAgY29sb3I6IHZhcigtLWNsci1za3ktNjAwKTsKfQoudGV4dC1yZWQtNjAwIHsKICBjb2xvcjogdmFyKC0tY2xyLXJlZC02MDApOwp9Ci50ZXh0LXJlZC03MDAgewogIGNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7Cn0KLnRleHQtcmVkLTc1MCB7CiAgY29sb3I6IHZhcigtLWNsci1yZWQtNzUwKTsKfQoKLmJvcmRlci1uZXV0cmFsLTI1MCB7CiAgYm9yZGVyOiB2YXIoLS1ib3JkZXItdywgMXB4KSBzb2xpZCB2YXIoLS1jbHItbmV1dHJhbC0yNTApOwp9CgouYm9yZGVyLWdyYXkgewogIGJvcmRlcjogdmFyKC0tYm9yZGVyLXcsIDFweCkgc29saWQgdmFyKC0tY2xyLWdyYXktMzAwKTsKfQoKLmJvcmRlci1yZWQtNzAwIHsKICBib3JkZXI6IHZhcigtLWJvcmRlci13LCAxcHgpIHNvbGlkIHZhcigtLWNsci1yZWQtNzAwKTsKfQoKLyogQm9yZGVyIHJhZGl1cyAqLwoucm91bmRlZCB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZCk7Cn0KLnJvdW5kZWQtNiB7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC02KTsKfQoucm91bmRlZC04IHsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLTgpOwp9Ci5yb3VuZGVkLWZ1bGwgewogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7Cn0KCi8qIFRyYW5zaXRpb24gKi8KLnRyYW5zaXRpb24tZGlzcGxheSB7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdmFyKC0tdHJhbnNpdGlvbi1kaXNwbGF5KTsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1kdXJhdGlvbi0xNTApOwogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1lYXNlLWluLW91dCk7Cn0KCi50cmFuc2l0aW9uLWNvbG9ycyB7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdmFyKC0tdHJhbnNpdGlvbi1jb2xvcnMpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWR1cmF0aW9uLTEwMCk7CiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWVhc2UtaW4tb3V0KTsKfQoKLnRyYW5zaXRpb24tc2hhZG93cyB7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdmFyKC0tdHJhbnNpdGlvbi1zaGFkb3dzKTsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiB2YXIoLS1kdXJhdGlvbi0xNTApOwogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiB2YXIoLS1lYXNlLWluLW91dCk7Cn0KCi8qIHR5cG9ncmFwaHkgKi8KLmZmLWludGVyLWxpZ2h0IHsKICBmb250LWZhbWlseTogdmFyKC0tZmYtaW50ZXItbGlnaHQpOwp9Ci5mZi1pbnRlciB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWludGVyKTsKfQouZmYtaW50ZXItYm9sZCB7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWludGVyLWJvbGQpOwp9Ci5mZi1vcGVuLXNhbnMgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1vcGVuLXNhbnMpOwp9Ci5mZi1vcGVuLXNhbnMtNjAwIHsKICBmb250LWZhbWlseTogdmFyKC0tZmYtb3Blbi1zYW5zLTYwMCk7Cn0KLmZmLW9wZW4tc2Fucy03MDAgewogIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1vcGVuLXNhbnMtNzAwKTsKfQoKLmxldHRlci1zcGFjaW5nLTEgewogIGxldHRlci1zcGFjaW5nOiA0Ljc1cHg7Cn0KLmxldHRlci1zcGFjaW5nLTIgewogIGxldHRlci1zcGFjaW5nOiAyLjdweDsKfQoubGV0dGVyLXNwYWNpbmctMyB7CiAgbGV0dGVyLXNwYWNpbmc6IDIuMzVweDsKfQoKLmZzLTc1MCB7CiAgZm9udC1zaXplOiB2YXIoLS1mcy03NTApOwp9Ci5mcy03MDAgewogIGZvbnQtc2l6ZTogdmFyKC0tZnMtNzAwKTsKfQouZnMtNjUwIHsKICBmb250LXNpemU6IHZhcigtLWZzLTY1MCk7Cn0KLmZzLTYyNSB7CiAgZm9udC1zaXplOiB2YXIoLS1mcy02MjUpOwp9Ci5mcy02MDAgewogIGZvbnQtc2l6ZTogdmFyKC0tZnMtNjAwKTsKfQouZnMtNTAwIHsKICBmb250LXNpemU6IHZhcigtLWZzLTUwMCk7Cn0KLmZzLTQwMCB7CiAgZm9udC1zaXplOiB2YXIoLS1mcy00MDApOwp9Ci5mcy0zNTAgewogIGZvbnQtc2l6ZTogdmFyKC0tZnMtMzUwKTsKfQouZnMtMzI1IHsKICBmb250LXNpemU6IHZhcigtLWZzLTMyNSk7Cn0KLmZzLTMwMCB7CiAgZm9udC1zaXplOiB2YXIoLS1mcy0zMDApOwp9Ci5mcy0yMDAgewogIGZvbnQtc2l6ZTogdmFyKC0tZnMtMjAwKTsKfQoKLmZ3LWJvbGQgewogIGZvbnQtd2VpZ2h0OiA3MDA7Cn0KCi5mdy00MDAgewogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi51cHBlcmNhc2UgewogIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cn0KCi50cmFja2luZyB7CiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxcmVtOwp9CgoudW5kZXJsaW5lIHsKICB0ZXh0LWRlY29yYXRpb24tbGluZTogdW5kZXJsaW5lOwp9CgouY3Vyc29yLXBvaW50ZXIgewogIGN1cnNvcjogcG9pbnRlcjsKfQoKLnRleHQtb3ZlcmZsb3ctZWxsaXBzaXMgewogIG92ZXJmbG93OiBoaWRkZW47CiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyogQWNjb3JkaW9uICovCi5hY2NvcmRpb24gewogIHBhZGRpbmctaW5saW5lOiAwLjc1cmVtOwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1jbHItbmV1dHJhbC00MDApOwogIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMC4zcyBlYXNlOwp9CgouYWNjb3JkaW9uOmhhcyguYWNjb3JkaW9uX19jb250ZW50W2FyaWEtaGlkZGVuPSdmYWxzZSddKSB7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMTAwKTsKfQoKLmFjY29yZGlvbl9fYnV0dG9uIHsKICBmbGV4OiAxIDEgMCU7CiAgZ2FwOiAwLjdyZW07CiAgcGFkZGluZy1ibG9jazogMC43NXJlbTsKICBmb250LXdlaWdodDogNDAwOwogIHRleHQtYWxpZ246IHN0YXJ0OwogIGxldHRlci1zcGFjaW5nOiAtMC4xNnB4OwogIGxpbmUtaGVpZ2h0OiAyNXB4Owp9CgouYWNjb3JkaW9uX19idXR0b246aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9CgouYWNjb3JkaW9uX19idXR0b25bYXJpYS1leHBhbmRlZD0ndHJ1ZSddIHsKICBmb250LWZhbWlseTogdmFyKC0tZmYtb3Blbi1zYW5zLTYwMCk7Cn0KCi5hY2NvcmRpb25fX2J1dHRvbi5hcnJvdy1mb3J3YXJkOjpiZWZvcmUgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKfQoKLmFjY29yZGlvbl9fY29udGVudCB7CiAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiAwZnI7CiAgdHJhbnNpdGlvbjoKICAgIGdyaWQtdGVtcGxhdGUtcm93cyAzMDBtcyBlYXNlLAogICAgLW1zLWdyaWQtcm93cyAzMDBtcyBlYXNlOwogIHBhZGRpbmctbGVmdDogMS44cmVtOwogIGxldHRlci1zcGFjaW5nOiAtMC4xNnB4OwogIGxpbmUtaGVpZ2h0OiAxLjc1cmVtOwp9CgouYWNjb3JkaW9uX19jb250ZW50W2FyaWEtaGlkZGVuPSdmYWxzZSddIHsKICBncmlkLXRlbXBsYXRlLXJvd3M6IDFmcjsKICBwYWRkaW5nLWJvdHRvbTogMXJlbTsKfQoKLmFjY29yZGlvbl9fY29udGVudCB1bCB7CiAgbWFyZ2luLWJsb2NrOiAxcmVtOwogIHBhZGRpbmctbGVmdDogMS4yNXJlbTsKICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7Cn0KCi5hY2NvcmRpb25fX2NvbnRlbnQgbGk6Om1hcmtlciB7CiAgZm9udC1zaXplOiAxNHB4Owp9CgouYWNjb3JkaW9uX19jb250ZW50IGEgewogIGNvbG9yOiB2YXIoLS1jbHItc2t5LTYwMCk7Cn0KCi5hY2NvcmRpb25fX2NvbnRlbnQgYTpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5hY2NvcmRpb25fX2NvbnRlbnQgPiBkaXYgPiBwIHsKICBtYXJnaW4tYmxvY2s6IDFyZW07Cn0KCi8qIEJhc2UgYXR0YWNobWVudCAqLwouYmFzZS1hdHRhY2htZW50IHsKICB3aWR0aDogMTAwJTsKfQoKLmJhc2UtYXR0YWNobWVudF9fdGl0bGUgewogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5iYXNlLWF0dGFjaG1lbnRfX2FkZGl0aW9uYWwtaW5mbyBhIHsKICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLmJhc2UtYXR0YWNobWVudF9fYWRkaXRpb25hbC1pbmZvIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1jbHItc2t5LTYwMCk7Cn0KCi5iYXNlLWF0dGFjaG1lbnRfX2Ryb3Atem9uZSB7CiAgbWluLWhlaWdodDogOTVweDsKICBwYWRkaW5nOiAxcmVtOwogIGJvcmRlcjogMXB4IGRhc2hlZCB2YXIoLS1jbHItZ3JheS00MDApOwogIHRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJhY2tncm91bmQtaW1hZ2U7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xczsKICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwp9CgouYmFzZS1hdHRhY2htZW50X19kcm9wLXpvbmU6aG92ZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKfQoKLmRyb3Atem9uZV9fY2VudGVyW2FyaWEtaGlkZGVuPSd0cnVlJ10gewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5iYXNlLWF0dGFjaG1lbnQgLmJhc2UtYXR0YWNobWVudF9faW5wdXQgewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5iYXNlLWF0dGFjaG1lbnRfX2Rlc2NyaXB0aW9uIHsKICBtYXgtd2lkdGg6IDMwMHB4OwogIHRleHQtYWxpZ246IGNlbnRlcjsKICBsaW5lLWhlaWdodDogMThweDsKfQoKLmJhc2UtYXR0YWNobWVudF9fZGVzY3JpcHRpb24gc3Bhbjpob3ZlciB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi8qIC5iYXNlLWF0dGFjaG1lbnRfX3VwbG9hZC1maWxlcyB7CiAgbWFyZ2luLXRvcDogMC41cmVtOwp9ICovCgouYmFzZS1hdHRhY2htZW50IC5maWxlLWl0ZW0gewogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuM3JlbSAwLjVyZW07CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2xyLWdyYXktMzAwKTsKfQoKLmJhc2UtYXR0YWNobWVudCAuZmlsZS1pdGVtOmhvdmVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItbmV1dHJhbC0yNTApOwp9CgouYmFzZS1hdHRhY2htZW50IC5maWxlLWl0ZW1fX2xlZnQgewogIHRleHQtYWxpZ246IGxlZnQ7Cn0KCi5iYXNlLWF0dGFjaG1lbnQgLmZpbGUtaXRlbV9fcmlnaHQgewogIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBhdXRvOwogIHRleHQtYWxpZ246IHJpZ2h0Owp9CgouYmFzZS1hdHRhY2htZW50IHNwYW5bZGF0YS1hY3Rpb249J2RlbGV0ZS1maWxlJ106aG92ZXIgewogIGNvbG9yOiB2YXIoLS1jbHItYmxhY2spOwp9CgouYmFzZS1hdHRhY2htZW50X19lcnJvci1tZXNzYWdlW2FyaWEtaGlkZGVuPSd0cnVlJ10gewogIGRpc3BsYXk6IG5vbmU7Cn0KCi8qIEJhc2UgY2FyZCAqLwouYmFzZV9fY2FyZCB7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGdhcDogMC4yNXJlbTsKICBtaW4taGVpZ2h0OiAyMThweDsKICBwYWRkaW5nOiAxLjVyZW07CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC04KTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwogIGJveC1zaGFkb3c6IDBweCA0cHggMTVweCAwcHggcmdiYSgxOTYsIDE5NiwgMTk2LCAwLjc1KTsKfQoKLmJhc2VfX2NhcmQ6aG92ZXIgLmJhc2VfX2NhcmQtdGl0bGUgewogIGNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7Cn0KCi5iYXNlX19jYXJkOmhvdmVyIC5iYXNlX19jYXJkLWJ1dHRvbiB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXJlZC03MDApOwp9CgouYmFzZV9fY2FyZDpob3ZlciAuYmFzZV9fY2FyZC1idXR0b24gc3ZnIHsKICBmaWxsOiB2YXIoLS1jbHItd2hpdGUpOwp9CgouYmFzZV9fY2FyZC1pY29uIHsKICBkaXNwbGF5OiBncmlkOwogIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CiAgd2lkdGg6IDMuMjVyZW07CiAgaGVpZ2h0OiAzLjI1cmVtOwogIG1hcmdpbi1sZWZ0OiBhdXRvOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQtZnVsbCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2xyLXJlZC03MDApOwp9CgouYmFzZV9fY2FyZC10aXRsZSB7CiAgZm9udC1zaXplOiB2YXIoLS1mcy0zNTApOwogIGZvbnQtZmFtaWx5OiB2YXIoLS1mZi1vcGVuLXNhbnMtNzAwKTsKICB0cmFuc2l0aW9uOiBjb2xvciAwLjFzIGVhc2U7Cn0KCi5iYXNlX19jYXJkLWRlc2NyaXB0aW9uIHsKICBmb250LXNpemU6IHZhcigtLWZzLTMwMCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW9wZW4tc2Fucyk7CiAgbGluZS1oZWlnaHQ6IDIxcHg7Cn0KCi5iYXNlX19jYXJkLWJ1dHRvbiB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGp1c3RpZnktY29udGVudDogY2VudGVyOwogIHdpZHRoOiAyLjVyZW07CiAgaGVpZ2h0OiAxLjVyZW07CiAgbWFyZ2luLXRvcDogYXV0bzsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLTIwKTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItcmVkLTIwMCk7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdmFyKC0tdHJhbnNpdGlvbi1jb2xvcnMpOwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7CiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWVhc2UtaW4pOwp9CgouYmFzZV9fY2FyZC1idXR0b24gc3ZnIHsKICBmaWxsOiB2YXIoLS1jbHItcmVkLTcwMCk7CiAgdHJhbnNpdGlvbjogZmlsbCAwLjFzIHZhcigtLWVhc2UtaW4pOwp9CgovKiBCYW5uZXIgbm90aWZpY2F0aW9uICovCi5iYW5uZXItbm90aWZpY2F0aW9uIHsKICBwYWRkaW5nLWJsb2NrOiAwLjI1cmVtOwogIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKLmJhbm5lci1ub3RpZmljYXRpb24gYSB7CiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Cn0KCi5iYW5uZXItbm90aWZpY2F0aW9uIGE6aG92ZXIgewogIGNvbG9yOiB2YXIoLS1jbHItbmV1dHJhbC0yMDApOwp9CgovKiBBcnJvdyBpY29uLCBDaGVjayBpY29uICovCi5hcnJvdy1mb3J3YXJkOjpiZWZvcmUsCi5hcnJvdy1iYWNrd2FyZDo6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICBtYXJnaW46IDAuMjVyZW07CiAgcGFkZGluZzogM3B4OwogIGJvcmRlcjogc29saWQgdmFyKC0tY2xyLXdoaXRlKTsKICBib3JkZXItd2lkdGg6IDAgMnB4IDJweCAwOwogIHRyYW5zbGF0ZTogMCAtMXB4OwogIHJvdGF0ZTogNDVkZWc7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdmFyKC0tdHJhbnNpdGlvbi10cmFuc2Zvcm0pOwogIHRyYW5zaXRpb24tZHVyYXRpb246IHZhcigtLWR1cmF0aW9uLTEwMCk7CiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IHZhcigtLWVhc2Utb3V0KTsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KLmFycm93LWZvcndhcmRbYXJpYS1leHBhbmRlZD0ndHJ1ZSddOjpiZWZvcmUsCi5hcnJvdy1iYWNrd2FyZFthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmFmdGVyIHsKICByb3RhdGU6IC0xMzVkZWc7CiAgdHJhbnNsYXRlOiAwIDJweDsKfQoKLmNoZWNrZWQtZm9yd2FyZDo6YmVmb3JlLAouY2hlY2tlZC1iYWNrd2FyZDo6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIG1hcmdpbi1yaWdodDogMC4zcmVtOwogIHBhZGRpbmc6IDVweCAycHg7CiAgYm9yZGVyOiBzb2xpZCB2YXIoLS1jbHItd2hpdGUpOwogIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7CiAgcm90YXRlOiA0NWRlZzsKfQoKLnRyaWFuZ2xlLWZvcndhcmQ6OmJlZm9yZSwKLnRyaWFuZ2xlLWJhY2t3YXJkOjphZnRlciB7CiAgY29udGVudDogJyc7CiAgd2lkdGg6IDA7CiAgaGVpZ2h0OiAwOwogIGJvcmRlci10b3A6IDdweCBzb2xpZCB0cmFuc3BhcmVudDsKICBib3JkZXItbGVmdDogMTBweCBzb2xpZCB2YXIoLS1jbHItYmxhY2spOwogIGJvcmRlci1ib3R0b206IDdweCBzb2xpZCB0cmFuc3BhcmVudDsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiB2YXIoLS10cmFuc2l0aW9uLXRyYW5zZm9ybSk7CiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogdmFyKC0tZHVyYXRpb24tMTAwKTsKICB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjogdmFyKC0tZWFzZS1vdXQpOwp9CgoudHJpYW5nbGUtZm9yd2FyZFthcmlhLWV4cGFuZGVkPSd0cnVlJ106OmJlZm9yZSwKLnRyaWFuZ2xlLWJhY2t3YXJkW2FyaWEtZXhwYW5kZWQ9J3RydWUnXTo6YWZ0ZXIgewogIHJvdGF0ZTogOTBkZWc7Cn0KCi8qIExvYWRlciAqLwoubG9hZGVyIHsKICBkaXNwbGF5OiBncmlkOwogIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CiAgcGFkZGluZy1sZWZ0OiAyOHB4Owp9CgoubG9hZGVyIHN2ZyB7CiAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogIHdpZHRoOiA2MHB4OwogIGhlaWdodDogNjBweDsKfQoKLmxvYWRlclthcmlhLWhpZGRlbj0ndHJ1ZSddIHsKICBkaXNwbGF5OiBub25lOwp9CgovKiBEcm9wZG93biAqLwouZHJvcGRvd24gewogIG1heC13aWR0aDogNDAwcHg7Cn0KCi5kcm9wZG93biA+IGxhYmVsLAouYmFzZS1pbnB1dCA+IGxhYmVsIHsKICBkaXNwbGF5OiBibG9jazsKICBtYXJnaW4tYm90dG9tOiAwLjVyZW07Cn0KCi5kcm9wZG93bl9fYnV0dG9uLAouYmFzZS1pbnB1dCA+IGlucHV0IHsKICB3aWR0aDogMTAwJTsKICBoZWlnaHQ6IDIuMjVyZW07CiAgcGFkZGluZy1pbmxpbmU6IDAuNXJlbTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItbmV1dHJhbC0zMDApOwogIGJveC1zaGFkb3c6IHZhcigtLWlucHV0LXNoYWRvdyk7Cn0KCi5kcm9wZG93bl9fYnV0dG9uOmZvY3VzLAouYmFzZS1pbnB1dCA+IGlucHV0OmZvY3VzLAp0ZXh0YXJlYTpmb2N1cyB7CiAgYm94LXNoYWRvdzogdmFyKC0taW5wdXQtc2hhZG93LWFjdGl2ZSk7Cn0KCi5kcm9wZG93bl9fYnV0dG9uLmFycm93LWJhY2t3YXJkOjphZnRlciB7CiAgbWFyZ2luLWxlZnQ6IGF1dG87CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jbHItYmxhY2spOwp9CgouZHJvcGRvd25fX21lbnUgewogIGRpc3BsYXk6IG5vbmU7CiAgd2lkdGg6IDEwMCU7CiAgbWF4LWhlaWdodDogMjM2cHg7CiAgcmlnaHQ6IDA7CiAgdG9wOiBjYWxjKDEwMCUgKyAycHgpOwogIHBhZGRpbmc6IDAuMjVyZW07CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2xyLW5ldXRyYWwtMTUwKTsKICBib3gtc2hhZG93OgogICAgcmdiYSgwLCAwLCAwLCAwLjEpIDBweCA0cHggNnB4IC0xcHgsCiAgICByZ2JhKDAsIDAsIDAsIDAuMDYpIDBweCAycHggNHB4IC0xcHg7CiAgei1pbmRleDogOTk7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KCi5kcm9wZG93bl9fbWVudVthcmlhLWhpZGRlbj0nZmFsc2UnXTpob3ZlciwKLmRyb3Bkb3duX19tZW51LmFjdGl2ZSB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5kcm9wZG93bl9fbWVudSAuY2hlY2tlZC1iYWNrd2FyZDo6YWZ0ZXIgewogIGRpc3BsYXk6IG5vbmU7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jbHItYmxhY2spOwp9CgouZHJvcGRvd25fX21lbnUgbGk6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTEyNSk7Cn0KCi5kcm9wZG93bl9fbWVudSBhLAouZHJvcGRvd25fX21lbnUgbGk6bm90KDpoYXMoYSkpIHsKICBkaXNwbGF5OiBmbGV4OwogIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogIHdpZHRoOiAxMDAlOwogIHBhZGRpbmc6IDAuN3JlbSAwLjVyZW07CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLW9wZW4tc2Fucyk7CiAgY3Vyc29yOiBwb2ludGVyOwp9CgouZHJvcGRvd25fX21lbnUgbGlbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddLmNoZWNrZWQtYmFja3dhcmQ6OmFmdGVyLAouZHJvcGRvd25fX21lbnUgbGlbYXJpYS1zZWxlY3RlZD0ndHJ1ZSddIC5jaGVja2VkLWJhY2t3YXJkOjphZnRlciB7CiAgZGlzcGxheTogYmxvY2s7Cn0KCi5kcm9wZG93biAuZHJvcGRvd25fX2Vycm9yLW1lc3NhZ2UsCi5iYXNlLWlucHV0IC5iYXNlLWlucHV0X19lcnJvci1tZXNzYWdlIHsKICBtYXJnaW4tdG9wOiAwLjI1cmVtOwp9CgovKiBDYXNlIHRpdGxlICovCi5zZWFyY2gtYm94IC5zZWFyY2gtYm94X19lcnJvci1tZXNzYWdlIHsKICBtYXJnaW4tdG9wOiAwLjI1cmVtOwp9CgovKiBDaGVja2JveCBpbnB1dCAqLwouYmFzZS1jaGVja2JveCAuYmFzZS1jaGVja2JveF9fdGl0bGUgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LXdlaWdodDogNDAwOwp9CgouYmFzZS1jaGVja2JveCAuZm9ybS1jb250cm9sIHsKICBnYXA6IDAuMjVyZW07Cn0KCi5iYXNlLWNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J10gewogIC0tc2l6ZTogMS4xMjVyZW07CiAgYXBwZWFyYW5jZTogbm9uZTsKICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7CiAgLW1vei1hcHBlYXJhbmNlOiBub25lOwogIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNsci1ibGFjayk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLXdoaXRlKTsKfQoKLmJhc2UtY2hlY2tib3ggaW5wdXRbdHlwZT0nY2hlY2tib3gnXTpkaXNhYmxlZCB7CiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jbHItZ3JheS00MDApOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTEyNSk7Cn0KCi5iYXNlLWNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106ZGlzYWJsZWQgKyBsYWJlbCB7CiAgY29sb3I6IHZhcigtLWNsci1ncmF5LTQwMCk7Cn0KCi5iYXNlLWNoZWNrYm94IGlucHV0W3R5cGU9J2NoZWNrYm94J106Y2hlY2tlZDo6YWZ0ZXIgewogIGNvbnRlbnQ6ICcnOwogIHBhZGRpbmc6IDRweCAyLjJweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItYmxhY2spOwogIGJvcmRlci13aWR0aDogMCAycHggMnB4IDA7CiAgcm90YXRlOiA0NWRlZzsKICB0cmFuc2xhdGU6IDAuMnB4IC0xcHg7Cn0KCi8qIFJhZGlvIGlucHV0ICovCi5iYXNlLXJhZGlvIC5iYXNlLXJhZGlvX190aXRsZSB7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwogIGZvbnQtd2VpZ2h0OiA0MDA7Cn0KCi5iYXNlLXJhZGlvIC5mb3JtLWNvbnRyb2wgewogIGdhcDogMC4yNXJlbTsKfQoKLmJhc2UtcmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXSB7CiAgLS1zaXplOiAxLjI1cmVtOwogIGFjY2VudC1jb2xvcjogdmFyKC0tY2xyLWdyYXktOTAwKTsKfQoKLmJhc2UtcmFkaW8gaW5wdXRbdHlwZT0ncmFkaW8nXTpkaXNhYmxlZCArIGxhYmVsIHsKICBjb2xvcjogdmFyKC0tY2xyLWdyYXktNDAwKTsKfQoKLmJhc2UtcmFkaW8gLmJhc2UtcmFkaW9fX2Vycm9yLW1lc3NhZ2UgewogIG1hcmdpbi10b3A6IDAuMjVyZW07Cn0KCi8qIEVtYWlsICovCi5iYXNlLWVtYWlsLAoudXJsLXJlY2xhc3NpZmljYXRpb24gewogIHBhZGRpbmc6IDEwcHggMXJlbTsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItbmV1dHJhbC0zMDApOwogIGJveC1zaGFkb3c6IHZhcigtLWlucHV0LXNoYWRvdyk7Cn0KCi5iYXNlLWVtYWlsID4gaW5wdXQsCi51cmwtcmVjbGFzc2lmaWNhdGlvbiA+IGlucHV0IHsKICBmbGV4OiAxIDEgZml0LWNvbnRlbnQ7CiAgd2lkdGg6IDEwMCU7CiAgYm9yZGVyOiBub25lOwp9CgouYmFzZS1lbWFpbDpoYXMoaW5wdXQ6Zm9jdXMpLAoudXJsLXJlY2xhc3NpZmljYXRpb246aGFzKGlucHV0OmZvY3VzKSB7CiAgYm94LXNoYWRvdzogdmFyKC0taW5wdXQtc2hhZG93LWFjdGl2ZSk7Cn0KCi5tdWx0aXBsZS1pdGVtIHsKICBnYXA6IDAuMjVyZW07CiAgcGFkZGluZzogMC4yNXJlbTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjYjdkMGViOwogIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7Cn0KCi5tdWx0aXBsZS1pdGVtLmludmFsaWQgewogIGJhY2tncm91bmQtY29sb3I6ICNlZGEzODk7Cn0KCi5tdWx0aXBsZS1pdGVtID4gc3BhbltkYXRhLWFjdGlvbj0nZGVsZXRlJ106aG92ZXIgewogIGNvbG9yOiB2YXIoLS1jbHItZ3JheS0zMDApOwp9CgoudXJsLXJlY2xhc3NpZmljYXRpb24gewogIG1pbi1oZWlnaHQ6IDg0cHg7CiAgbWFyZ2luLWJvdHRvbTogMC41cmVtOwp9CgoudG9vbHRpcC1pY29uIHsKICBtYXJnaW4tbGVmdDogMC4yNXJlbTsKfQoKLnRvb2x0aXAtaWNvbjpob3ZlciAudG9vbHRpcC10ZXh0IHsKICBvcGFjaXR5OiAxOwogIHBvaW50ZXItZXZlbnRzOiBhbGw7Cn0KCi50b29sdGlwLXRleHQgewogIGJvdHRvbTogMTAwJTsKICBsZWZ0OiAwOwogIG1heC13aWR0aDogMjUwcHg7CiAgd2lkdGg6IG1heC1jb250ZW50OwogIHBhZGRpbmc6IDAuNXJlbTsKICBmb250LXNpemU6IDEzcHg7CiAgb3BhY2l0eTogMDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgbGluZS1oZWlnaHQ6IDEyNCU7CiAgei1pbmRleDogMTA7CiAgdHJhbnNpdGlvbjogMC4ycyBlYXNlOwp9CgoudG9vbHRpcC10ZXh0IGEgewogIGNvbG9yOiB2YXIoLS1jbHItc2t5LTYwMCk7Cn0KCi8qIG1lc3NhZ2UtYm94ICovCi5tZXNzYWdlLWJveCB7CiAgcGFkZGluZzogMXJlbTsKICBnYXA6IDEuNXJlbTsKICBsaW5lLWhlaWdodDogMjVweDsKICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKfQoKLm1lc3NhZ2UtYm94LnJlZ3VsYXIgewogIGNvbG9yOiAjNWQ1YjUxOwogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWdyZWVuLTcwMCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLWdyZWVuLTIwMCk7Cn0KCi5tZXNzYWdlLWJveC5pbXBvcnRhbnQgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLXJlZC03MDApOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1yZWQtMjAwKTsKfQoKLm1lc3NhZ2UtYm94Lndhcm5pbmcgewogIGNvbG9yOiB2YXIoLS1jbHItYnJvd24tNjAwKTsKICBib3JkZXItY29sb3I6IHZhcigtLWNsci1icm93bi02MDApOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1icm93bi0xMDApOwp9CgoubWVzc2FnZS1ib3gudGlwIHsKICBib3JkZXItY29sb3I6IHZhcigtLWNsci1za3ktNTAwKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwp9CgoubWVzc2FnZS1ib3ggaDQgewogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBmb250LXNpemU6IDE4cHg7Cn0KCi5tZXNzYWdlLWJveC5pbXBvcnRhbnQgaDQgewogIGNvbG9yOiB2YXIoLS1jbHItcmVkLTcwMCk7Cn0KCi5tZXNzYWdlLWJveCAubWVzc2FnZS1ib3hfX2RlbGV0ZS1idG4gewogIG1hcmdpbi1sZWZ0OiBhdXRvOwp9CgovKiBQYWdpbmF0aW9uICovCi5wYWdpbmF0aW9uIHsKICBtYXJnaW4tdG9wOiAwLjc1cmVtOwogIHBhZGRpbmctYmxvY2s6IDAuNzVyZW07Cn0KCi5wYWdlcy1jb250YWluZXIgewogIGdhcDogMC43NXJlbTsKICBtYXJnaW4taW5saW5lOiAwLjc1cmVtOwp9CgoucGFnaW5hdGlvbi1pY29uOmRpc2FibGVkIHsKICBjdXJzb3I6IG5vdC1hbGxvd2VkOwp9CgoucGFnaW5hdGlvbi1pY29uOmRpc2FibGVkIHBhdGggewogIGZpbGw6IHZhcigtLWNsci1uZXV0cmFsLTI1MCk7Cn0KCi5wYWdlIHsKICAtLXNpemU6IDEuNXJlbTsKICBib3JkZXItcmFkaXVzOiAzcHg7CiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7Cn0KCi5wYWdlLmFjdGl2ZSwKLnBhZ2U6aG92ZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWdyYXktOTAwKTsKfQovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2tlbGV0b24gbG9hZGluZyBhbmltYXRpb24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgouc2tlbGV0b24gewogIG9wYWNpdHk6IDAuNzsKICBhbmltYXRpb246IHNrZWxldG9uLWxvYWRpbmcgMXMgbGluZWFyIGluZmluaXRlIGFsdGVybmF0ZTsKfQoKLnNrZWxldG9uLXRleHQgewogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMS41cmVtOwogIG1hcmdpbi1ib3R0b206IDAuNXJlbTsKICBib3JkZXItcmFkaXVzOiAwLjEyNXJlbTsKfQoKLnNrZWxldG9uLXRleHQ6bGFzdC1jaGlsZCB7CiAgbWFyZ2luLWJvdHRvbTogMDsKICB3aWR0aDogODAlOwp9CgpAa2V5ZnJhbWVzIHNrZWxldG9uLWxvYWRpbmcgewogIDAlIHsKICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgwLCAwJSwgOTAlKTsKICB9CgogIDEwMCUgewogICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDAsIDAlLCA4NyUpOwogIH0KfQoKLyogLS0tLS0tLS0tLS0tLS0tU2VhcmNoIEJhci0tLS0tLS0tLS0tLS0tICovCi5zZWFyY2hfX2ljb24gewogIHdpZHRoOiAxNnB4OwogIGhlaWdodDogMTZweDsKfQoKLnNlYXJjaF9fY29udGFpbmVyIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgbWF4LXdpZHRoOiA4MDBweDsKICB3aWR0aDogMTAwJTsKICBjb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgYm94LXNoYWRvdzogMCAwIDAgMXB4IHZhcigtLWNsci1uZXV0cmFsLTM1MCk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMjUwKTsKICBmb250LWZhbWlseTogdmFyKC0tZmYtb3Blbi1zYW5zKTsKICB0cmFuc2l0aW9uLXByb3BlcnR5OiBib3JkZXItcmFkaXVzLCBib3gtc2hhZG93OwogIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMnM7CiAgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246IGVhc2U7Cn0KCi5zZWFyY2hfX2NvbnRhaW5lcjpmb2N1cy13aXRoaW4gewogIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIDJweCB2YXIoLS1jbHItcmVkLTcwMCk7Cn0KCi5zZWFyY2gtZm9ybSB7CiAgZGlzcGxheTogZmxleDsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGhlaWdodDogNjBweDsKICBwYWRkaW5nLWlubGluZTogMXJlbSAwLjVyZW07Cn0KCi5zZWFyY2gtZm9ybV9fZHJvcGRvd24gewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBhbGlnbi1zZWxmOiBzdHJldGNoOwogIGdhcDogMC41cmVtOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLnNlYXJjaC1mb3JtX19kcm9wZG93bi5hcnJvdy1iYWNrd2FyZDo6YWZ0ZXIgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKfQoKLnNlYXJjaC1mb3JtIC5kcm9wZG93bi1sYWJlbCB7CiAgb3V0bGluZTogbm9uZTsKICBtYXgtd2lkdGg6IDMwMHB4OwogIG92ZXJmbG93OiBoaWRkZW47CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICBib3JkZXI6IG5vbmU7CiAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyIHJpZ2h0OwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50Owp9Cgouc2VhcmNoLWZvcm0gLmRpdmlkZXIgewogIHdpZHRoOiAxLjVweDsKICBoZWlnaHQ6IDEuNXJlbTsKICBtYXJnaW4taW5saW5lOiAxcmVtOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1ibGFjayk7Cn0KCi5zZWFyY2gtZm9ybSAuc2VhcmNoLWZvcm1fX2lucHV0IHsKICBmbGV4LWdyb3c6IDE7CiAgYWxpZ24tc2VsZjogc3RyZXRjaDsKICBhcHBlYXJhbmNlOiBub25lOwogIG91dGxpbmU6IG5vbmU7CiAgcGFkZGluZzogMDsKICBib3JkZXI6IG5vbmU7CiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7CiAgZm9udC13ZWlnaHQ6IDQwMDsKfQoKLnNlYXJjaC1mb3JtIC5zZWFyY2gtZm9ybV9faW5wdXQ6OnBsYWNlaG9sZGVyIHsKICBjb2xvcjogdmFyKC0tY2xyLWdyYXktNDAwKTsKfQoKLnNlYXJjaC1mb3JtX19idXR0b25zLmhhcy12YWx1ZSAuc2VhcmNoLWJ1dHRvbiB7CiAgZGlzcGxheTogbm9uZTsKfQoKLnNlYXJjaC1mb3JtX19idXR0b25zLmhhcy12YWx1ZSAuZGVsZXRlLWJ1dHRvbiB7CiAgZGlzcGxheTogZ3JpZDsKfQoKLnNlYXJjaC1mb3JtIC5zZWFyY2gtYnV0dG9uLAouc2VhcmNoLWZvcm0gLmRlbGV0ZS1idXR0b24gewogIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTsKICBvdXRsaW5lOiBub25lOwogIGRpc3BsYXk6IGdyaWQ7CiAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICB3aWR0aDogMzZweDsKICBoZWlnaHQ6IDM2cHg7CiAgcGFkZGluZzogMDsKICBmb250LXNpemU6IDEuNXJlbTsKICBib3JkZXI6IG5vbmU7CiAgYm9yZGVyLXJhZGl1czogNTAlOwogIGxpbmUtaGVpZ2h0OiAxOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLnNlYXJjaC1mb3JtIC5zZWFyY2gtYnV0dG9uOmhvdmVyLAouc2VhcmNoLWZvcm0gLmRlbGV0ZS1idXR0b246aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTM1MCk7Cn0KCi5zZWFyY2gtZm9ybSAuc2VhcmNoLWJ1dHRvbjphY3RpdmUsCi5zZWFyY2gtZm9ybSAuZGVsZXRlLWJ1dHRvbjphY3RpdmUgewogIHNjYWxlOiAwLjk1Owp9Cgouc2VhcmNoLWZvcm0gLmRlbGV0ZS1idXR0b24gewogIGRpc3BsYXk6IG5vbmU7Cn0KCi5zZWFyY2gtZm9ybV9fZHJvcGRvd24tbGlzdCB7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogMTAwJTsKICByaWdodDogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIG1heC1oZWlnaHQ6IDMwMHB4OwogIGNvbG9yOiB2YXIoLS1jbHItYmxhY2spOwogIGJvcmRlci1yYWRpdXM6IHZhcigtLXJvdW5kZWQpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSk7CiAgb3ZlcmZsb3c6IGF1dG87CiAgb3BhY2l0eTogMDsKICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogb3BhY2l0eSwgdmlzaWJpbGl0eTsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjJzOwogIHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOiBlYXNlOwogIHotaW5kZXg6IDEwOwp9Cgouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QuYWN0aXZlIHsKICBvcGFjaXR5OiAxOwogIHZpc2liaWxpdHk6IHZpc2libGU7Cn0KCi5zZWFyY2gtZm9ybV9fZHJvcGRvd24tbGlzdCAuYWxsLXByb2R1Y3RzIHsKICBwYWRkaW5nOiAxcmVtIDEuNXJlbTsKfQoKLnNlYXJjaC1mb3JtX19kcm9wZG93bi1saXN0IHVsID4gbGk6Zmlyc3QtY2hpbGQgewogIHBvc2l0aW9uOiBzdGlja3k7CiAgdG9wOiAwOwogIHBhZGRpbmc6IDAgMS41cmVtOwogIGNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1ibGFjayk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWludGVyKTsKICBjdXJzb3I6IGRlZmF1bHQ7CiAgbGluZS1oZWlnaHQ6IDNyZW07Cn0KCi5zZWFyY2gtZm9ybV9fZHJvcGRvd24tbGlzdCAuYWxsLXByb2R1Y3RzLAouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QgbGkgewogIGRpc3BsYXk6IGZsZXg7CiAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgY29sb3I6IHZhcigtLWNsci13aGl0ZSk7CiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY2xyLWdyYXktNjUwKTsKICBmb250LXNpemU6IHZhcigtLWZzLTMwMCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWludGVyLWxpZ2h0KTsKICBjdXJzb3I6IHBvaW50ZXI7CiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvcjsKICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzOwp9Cgouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QgbGkgewogIHBhZGRpbmc6IDAuNzVyZW0gMS41cmVtOwp9Cgouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QgbGk6aG92ZXIsCi5zZWFyY2gtZm9ybV9fZHJvcGRvd24tbGlzdCAuYWxsLXByb2R1Y3RzOmhvdmVyLAouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QgLmNoZWNrZWQtYmFja3dhcmQ6OmFmdGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jbHItZ3JheS00NTApOwp9Cgouc2VhcmNoLWZvcm1fX2Ryb3Bkb3duLWxpc3QgLmNoZWNrZWQtYmFja3dhcmQ6OmFmdGVyIHsKICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTsKfQoKLyogLnNlYXJjaC1mb3JtX19kcm9wZG93bi1saXN0IC5zZWFyY2hfX3BhbmVsIC5sb2dpbi1idG46aG92ZXIgewogIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwp9ICovCgovKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tZGN4QmFzZVBvcG91dCBtb2RhbC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi5iYWNrZHJvcCB7CiAgcG9zaXRpb246IGZpeGVkOwogIHRvcDogMDsKICBsZWZ0OiAwOwogIHdpZHRoOiAxMDAlOwogIGhlaWdodDogMTAwdmg7CiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzNCwgMzQsIDM0KTsKICBvcGFjaXR5OiAwOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICB6LWluZGV4OiA1NTU7CiAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgdHJhbnNpdGlvbjogMC4zcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpOwp9CgouYmFja2Ryb3AuYWN0aXZlIHsKICBwb2ludGVyLWV2ZW50czogYWxsOwogIHZpc2liaWxpdHk6IHZpc2libGU7CiAgb3BhY2l0eTogMC42Owp9CgpkaWFsb2cgewogIHBvc2l0aW9uOiBmaXhlZDsKICB0b3A6IDUwJTsKICBsZWZ0OiA1MCU7CiAgZGlzcGxheTogZmxleDsKICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICBnYXA6IDE2cHg7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IDA7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSk7CiAgYm9yZGVyLXJhZGl1czogdmFyKC0tcm91bmRlZC02KTsKICBmb250LWZhbWlseTogdmFyKC0tZmYtb3Blbi1zYW5zKTsKICBmb250LXNpemU6IHZhcigtLWZzLTMwMCk7CiAgb3BhY2l0eTogMDsKICB0cmFuc2l0aW9uOiAwLjRzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7CiAgdHJhbnNsYXRlOiAtNTAlIDAlOwogIHNjYWxlOiAxOwogIHotaW5kZXg6IDYwMDsKICBwb2ludGVyLWV2ZW50czogYWxsOwogIHZpc2liaWxpdHk6IGhpZGRlbjsKICBib3gtc2hhZG93OiByZ2IoMCAwIDAgLyAyOCUpIDBweCA4cHggMjhweDsKfQoKZGlhbG9nLmFjdGl2ZSB7CiAgb3BhY2l0eTogMTsKICB0cmFuc2xhdGU6IC01MCUgLTUwJTsKICB2aXNpYmlsaXR5OiB2aXNpYmxlOwp9CgoucG9wb3V0LWNvbnRlbnQgewogIC0tZ2FwOiAwLjVyZW07Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1kY3hDYXNlRGV0YWlsSW5kaWNhdG9ycy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KCi51bmRlcmxpbmUtaW5kaWNhdG9ycyA+ICogewogIGZsZXg6IDE7CiAgbWF4LXdpZHRoOiAxOTRweDsKICBwYWRkaW5nOiB2YXIoLS11bmRlcmxpbmUtZ2FwLXksIDAuNXJlbSk7CiAgYm9yZGVyOiAwOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB0cmFuc3BhcmVudDsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIGN1cnNvcjogcG9pbnRlcjsKfQoKLnVuZGVybGluZS1pbmRpY2F0b3JzID4gW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7CiAgY29sb3I6IHZhcigtLWNsci1ncmF5LTkwMCk7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNsci1ncmF5LTkwMCk7CiAgZm9udC1mYW1pbHk6IHZhcigtLWZmLWludGVyKTsKfQoKLnVuZGVybGluZS1pbmRpY2F0b3JzID4gKjpob3ZlciB7CiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWNsci1ncmF5LTMwMCk7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1kY3hDYXNlRGV0YWlsVGFiRGF0ZVNvcnRpbmctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCgoucmFkaW8taW5kaWNhdG9ycyB7CiAgZmxleC13cmFwOiB3cmFwOwogIC0tZ2FwOiAxcmVtOwp9CgoucmFkaW8taW5kaWNhdG9ycyA+ICogewogIGN1cnNvcjogcG9pbnRlcjsKICBhbGlnbi1pdGVtczogY2VudGVyOwogIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwogIC0tZ2FwOiAwLjJyZW07Cn0KCi5yYWRpby1pbmRpY2F0b3JzIGlucHV0W3R5cGU9J3JhZGlvJ10gewogIGZsZXg6IDE7CiAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwogIGFwcGVhcmFuY2U6IG5vbmU7CiAgb3V0bGluZTogbm9uZTsKICBoZWlnaHQ6IGluaGVyaXQ7CiAgbWFyZ2luOiAwOwogIHBhZGRpbmc6IHZhcigtLXJhZGlvLXBhZGRpbmcteSwgMC44cmVtKSB2YXIoLS1yYWRpby1wYWRkaW5nLXksIDAuOHJlbSk7CiAgYm9yZGVyOiBub25lOwogIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CiAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOwogIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCi5yYWRpby1pbmRpY2F0b3JzIGlucHV0W3R5cGU9J3JhZGlvJ10gewogIGJhY2tncm91bmQtaW1hZ2U6IHVybCgiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB3aWR0aD0nMjQnIGhlaWdodD0nMjQnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ2NpcmNsZSBjeD0nMTInIGN5PScxMicgcj0nOScgc3Ryb2tlPSclMjMyMjIyMjJGRicgc3Ryb2tlLXdpZHRoPScyJy8lM0UlM0Mvc3ZnJTNFJTBBIik7Cn0KCi5yYWRpby1pbmRpY2F0b3JzIGlucHV0W3R5cGU9J3JhZGlvJ106Y2hlY2tlZCB7CiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHdpZHRoPScyNCcgaGVpZ2h0PScyNCcgdmlld0JveD0nMCAwIDI0IDI0JyBmaWxsPSdub25lJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnJTNFJTNDY2lyY2xlIGN4PScxMicgY3k9JzEyJyByPSc5JyBzdHJva2U9JyUyMzIyMjIyMkZGJyBzdHJva2Utd2lkdGg9JzInLyUzRSUzQ2NpcmNsZSBjeD0nMTInIGN5PScxMicgcj0nNCcgZmlsbD0nJTIzMjIyMjIyRkYnLyUzRSUzQy9zdmclM0UgIik7Cn0KCi5yYWRpby1pbmRpY2F0b3JzID4gbGFiZWwuZGlzYWJsZWQgPiBpbnB1dFt0eXBlPSdyYWRpbyddIHsKICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgd2lkdGg9JzI0JyBoZWlnaHQ9JzI0JyB2aWV3Qm94PScwIDAgMjQgMjQnIGZpbGw9J25vbmUnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NjaXJjbGUgY3g9JzEyJyBjeT0nMTInIHI9JzknIHN0cm9rZT0nJTIzOWQ5ZmEyJyBzdHJva2Utd2lkdGg9JzInLyUzRSUzQy9zdmclM0UlMEEiKTsKfQoKLnJhZGlvLWluZGljYXRvcnMgPiBsYWJlbC5kaXNhYmxlZCA+IGRpdiB7CiAgY29sb3I6IHZhcigtLWNsci1ncmF5LTMwMCk7Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1UaHJlYXQgY2FzZSBjYXRlZ29yeSBidXR0b25zIHNldHRpbmdzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwouY2F0ZWdvcnktYnV0dG9uIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgb3ZlcmZsb3c6IGF1dG87Cn0KCi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1UaHJlYXQgY2FzZSB0YWJsZSBnZW5lcmFsIHNldHRpbmdzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwoKLnRhYmxlLWxpc3RzIHsKICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgLyogb3ZlcmZsb3c6IGF1dG87ICovCiAgb3ZlcmZsb3c6IHVuc2V0OwogIG1pbi1oZWlnaHQ6IDMwMHB4Owp9CgoudGFibGUtbGlzdHMgLnBhdHRlcm4tYnJhbmNoIHsKICBwYWRkaW5nOiAwOwp9CgoudGFibGUtbGlzdHMgdGggewogIHBhZGRpbmc6IDAuNXJlbTsKICBmb250LWZhbWlseTogdmFyKC0tZmYtb3Blbi1zYW5zKTsKICBmb250LXdlaWdodDogNDAwOwogIGZvbnQtc2l6ZTogdmFyKC0tZnMtMzAwKTsKICBjb2xvcjogdmFyKC0tY2xyLWJsYWNrKTsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDFkM2Q0OwogIHdvcmQtYnJlYWs6IGtlZXAtYWxsOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoKLnRhYmxlLWxpc3RzIHRkIHsKICBwYWRkaW5nOiAwLjc1cmVtIDAuNXJlbTsKICB3b3JkLWJyZWFrOiBicmVhay1hbGw7Cn0KCi50YWJsZS1saXN0cyAuZXNjYWxhdGUgewogIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKfQoKLyogLnRhYmxlLWxpc3RzIGJ1dHRvbiB7CiAgbWluLXdpZHRoOiA3MHB4OwogIHBhZGRpbmc6IDhweDsKICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKICBib3JkZXItcmFkaXVzOiA0cHg7CiAgYmFja2dyb3VuZC1jb2xvcjogaHNsKHZhcigtLWNsci13aGl0ZSkpOwp9ICovCgoudGFibGUtbGlzdHMgLmVzY2FsYXRlID4gYnV0dG9uOmZpcnN0LWNoaWxkIHsKICBtYXJnaW4tcmlnaHQ6IDE2cHg7Cn0KCi50YWJsZS1saXN0cyAuZXNjYWxhdGUgPiBidXR0b246Zmlyc3QtY2hpbGQ6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTEwMCk7Cn0KCi50YWJsZS1saXN0cwogIC5lc2NhbGF0ZQogID4gYnV0dG9uOmZpcnN0LWNoaWxkOmRpc2FibGVkOmhvdmVyCiAgfiAuZXNjYWxhdGlvbi1kaXNhYmxlZC1tZXNzYWdlIHsKICBkaXNwbGF5OiBibG9jazsKfQoKLnRhYmxlLWxpc3RzIC5lc2NhbGF0aW9uLWRpc2FibGVkLW1lc3NhZ2UgewogIGRpc3BsYXk6IG5vbmU7CiAgcG9zaXRpb246IGFic29sdXRlOwogIHRvcDogLTQwcHg7CiAgcmlnaHQ6IDI0cHg7CiAgd2lkdGg6IDI1NnB4OwogIHBhZGRpbmc6IDhweDsKICBmb250LXNpemU6IHZhcigtLWZzLTIwMCk7CiAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY2xyLWJsYWNrKTsKICBib3JkZXItcmFkaXVzOiB2YXIoLS1yb3VuZGVkLTgpOwogIGJhY2tncm91bmQ6IHZhcigtLWNsci13aGl0ZSk7CiAgYm94LXNoYWRvdzogMHB4IDJweCA0cHggMHB4IHJnYmEoMTk2LCAxOTYsIDE5NiwgMC4zNSk7CiAgd2hpdGUtc3BhY2U6IGluaXRpYWw7CiAgdGV4dC1hbGlnbjogbGVmdDsKICBsaW5lLWhlaWdodDogMTguNDhweDsKICBwb2ludGVyLWV2ZW50czogbm9uZTsKICB6LWluZGV4OiAxMDsKfQoKLnRhYmxlLWxpc3RzIC5lc2NhbGF0ZSBidXR0b246ZGlzYWJsZWQgewogIGNvbG9yOiB2YXIoLS1jbHItZ3JheS0zMDApICFpbXBvcnRhbnQ7CiAgY3Vyc29yOiBub3QtYWxsb3dlZDsKfQoKLnRhYmxlLWxpc3RzIC5lc2NhbGF0ZSBidXR0b246Zmlyc3QtY2hpbGQ6ZGlzYWJsZWQgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLW5ldXRyYWwtMjUwKSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1uZXV0cmFsLTI1MCkgIWltcG9ydGFudDsKfQoKLnRhYmxlLWxpc3RzIC5lc2NhbGF0ZSBidXR0b246Zmlyc3QtY2hpbGQgKyBidXR0b246ZGlzYWJsZWQgewogIGJvcmRlci1jb2xvcjogdmFyKC0tY2xyLWdyYXktMzAwKSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSkgIWltcG9ydGFudDsKfQoKLnRhYmxlLWxpc3RzIGJ1dHRvbi5hY3RpdmUgewogIGNvbG9yOiB2YXIoLS1jbHItd2hpdGUpOwogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1za3ktNjAwKTsKICBib3JkZXItY29sb3I6IHZhcigtLWNsci1za3ktNjAwKTsKfQoKLnRhYmxlLWxpc3RzIGJ1dHRvbi5hY3RpdmU6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci1za3ktNzAwKTsKfQoKLnRhYmxlLWxpc3RzIC5zdGF0dXMtbWVzc2FnZSB7CiAgbWluLXdpZHRoOiAzMDBweDsKICB0b3A6IDQ2cHg7CiAgcmlnaHQ6IDhweDsKICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jbHItYmxhY2spOwogIHBhZGRpbmc6IDAuNXJlbTsKICB6LWluZGV4OiAxMDsKfQoKLnRhYmxlLWxpc3RzIC5zdGF0dXMtbWVzc2FnZVthcmlhLWhpZGRlbj0ndHJ1ZSddIHsKICBkaXNwbGF5OiBub25lOwp9Cgoubm8tcmVzdWx0LW1lc3NhZ2UgewogIHdpZHRoOiBmaXQtY29udGVudDsKICBwYWRkaW5nOiAwLjZyZW07CiAgYm9yZGVyLXJhZGl1czogNHB4Owp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEyNzZweCkgewogIC5jb250YWluZXIgewogICAgcGFkZGluZy1pbmxpbmU6IDEuNXJlbTsKICB9Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgLnRhYmxlLWxpc3RzIHRkIHsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgfQoKICAudGFibGUtbGlzdHMgdGQsCiAgLnRhYmxlLWxpc3RzIHRoIHsKICAgIHBhZGRpbmc6IDAuNzVyZW0gMC41cmVtOwogICAgYm9yZGVyOiAwOwogICAgYm9yZGVyLXRvcDogMi41cHggc29saWQgdmFyKC0tY2xyLW5ldXRyYWwtMTAwKTsKICB9CgogIC50YWJsZS1saXN0cyB0ciA+IHRkOm50aC1jaGlsZChuICsgMyk6bm90KHRkOmxhc3QtY2hpbGQpLAogIC50YWJsZS1saXN0cyB0ciA+IHRoOm50aC1jaGlsZChuICsgMyk6bm90KHRoOmxhc3QtY2hpbGQpIHsKICAgIGJvcmRlci1pbmxpbmU6IDIuNXB4IHNvbGlkIHZhcigtLWNsci1uZXV0cmFsLTEwMCk7CiAgfQoKICAudGFibGUtbGlzdHMgdHIgPiB0ZDpmaXJzdC1jaGlsZDpub3QoLnN0YXR1cyksCiAgLnRhYmxlLWxpc3RzIHRyID4gdGg6Zmlyc3QtY2hpbGQ6bm90KC5zdGF0dXMpIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICBsZWZ0OiAwOwogICAgbWF4LXdpZHRoOiAxMjBweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNsci13aGl0ZSk7CiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CiAgICB3b3JkLWJyZWFrOiBub3JtYWw7CiAgICB6LWluZGV4OiA1OwogIH0KCiAgLnRhYmxlLWxpc3RzIHRyID4gdGQ6Zmlyc3QtY2hpbGQ6bm90KC5zdGF0dXMpIHsKICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgfQoKICAudGFibGUtbGlzdHMgdHIgPiB0ZDpmaXJzdC1jaGlsZDpub3QoLnN0YXR1cyk6OmFmdGVyLAogIC50YWJsZS1saXN0cyB0ciA+IHRoOmZpcnN0LWNoaWxkOm5vdCguc3RhdHVzKTo6YWZ0ZXIgewogICAgY29udGVudDogJyc7CiAgICBib3gtc2hhZG93OiAycHggMCA1cHggLTJweCBoc2woMGRlZyAwJSAzOSUgLyAyMCUpOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgcmlnaHQ6IDA7CiAgICB3aWR0aDogMTBweDsKICAgIGhlaWdodDogMTAwJTsKICB9CgogIC50YWJsZS1saXN0cyB0ciA+IHRkOmZpcnN0LWNoaWxkOm5vdCguc3RhdHVzKTo6YmVmb3JlLAogIC50YWJsZS1saXN0cyB0ciA+IHRoOmZpcnN0LWNoaWxkOm5vdCguc3RhdHVzKTo6YmVmb3JlIHsKICAgIGNvbnRlbnQ6ICcnOwogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgbGVmdDogLTJweDsKICAgIHdpZHRoOiAycHg7CiAgICBoZWlnaHQ6IDEwMCU7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgIHotaW5kZXg6IDM7CiAgfQoKICAudGFibGUtbGlzdHMgLmVzY2FsYXRlID4gYnV0dG9uOmZpcnN0LWNoaWxkIHsKICAgIG1hcmdpbi1yaWdodDogOHB4OwogIH0KCiAgLnRhYmxlLWxpc3RzIGJ1dHRvbiB7CiAgICBwYWRkaW5nOiA2cHg7CiAgfQp9CgpAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg2MHB4KSB7CiAgLmJhbm5lci1ub3RpZmljYXRpb24gLmJhbm5lci1ub3RpZmljYXRpb25fX2ljb24gewogICAgd2lkdGg6IDIuNXJlbTsKICAgIGhlaWdodDogMi41cmVtOwogIH0KfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkgewogIC5zZWFyY2gtZm9ybV9fZHJvcGRvd24sCiAgLnNlYXJjaC1mb3JtIC5kaXZpZGVyLAogIC5zZWFyY2ggc3BhbiB7CiAgICBkaXNwbGF5OiBub25lOwogIH0KCiAgLnNlYXJjaC1mb3JtIHsKICAgIGhlaWdodDogNDhweDsKICB9Cn0KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTgwcHgpIHsKICAuYmFzZV9fY2FyZCB7CiAgICBwYWRkaW5nOiAxcmVtOwogIH0KCiAgLnVuZGVybGluZS1pbmRpY2F0b3JzID4gKiB7CiAgICAtLXVuZGVybGluZS1nYXAteDogMC41cmVtOwogIH0KCiAgLnJhZGlvLWluZGljYXRvcnMgewogICAgLS1nYXA6IDAuNXJlbTsKICB9CgogIC5yYWRpby1pbmRpY2F0b3JzIGlucHV0W3R5cGU9J3JhZGlvJ10gewogICAgYmFja2dyb3VuZC1zaXplOiAyMHB4OwogIH0KfQo=" >
        
          <link rel="stylesheet" href="/thumbnail.css" >
        
          <link rel="stylesheet" href="data:text/css;base64,aDEgewp9Cg==" >
        
          <link rel="stylesheet" href="data:text/css;base64,aDEgewp9Cg==" >
        
        <script defer src="/_resources/getresourcemanager?lang=en-US"></script>


        <style> .case-detail {
    width: 1046px;
  }
  
  .case-detail__tabs {
    overflow-x: auto;
  }
  
  .case-detail__tabs .tab-item {
    min-width: 172px;
    padding-block: .5rem;
    color: #6d6e71;
    border-radius: .25rem .25rem 0 0;
  }
  
  .case-detail__tabs .tab-item:hover {
    background-color: #d1d3d4;
  }
  
  .case-detail__tabs .tab-item[aria-selected="true"] {
    color: var(--clr-black);
    background-color: var(--clr-neutral-100);
    font-family: var(--ff-open-sans-600);
  }
  
  .case-detail__tab-content {
    width: 100%;
    min-height: 728px;
    padding: 2rem 1rem 1rem 1rem;
    border-radius: 0 .25rem .25rem .25rem;
  }
  
  .tab-content {
    flex: 1;
  }
  
  .tab-content[aria-hidden="true"] {
    display: none;
  }
  
  .tab-content__left {
    flex: 1 1 704px;
  }
  
  .tab-content__right {
    flex: 1 1 288px;
  }
  
  .case-detail__tab-content textarea {
    border-color: #d1d3d4;
  }
  
  .case-detail__attachment[aria-hidden="true"] {
    display: none;
  }
  
  .message-item,
  .case-info__block {
    border: 1px solid #d1d3d4;
  }
  
  .message-item[aria-expanded="true"] .message-item__content {
    display: block;
  }
  
  .message-item__abbv-name {
    --size: 1.5rem;
    line-height: 1;
  }
  
  .message-item__content {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    word-break: break-word;
    line-height: 1.5rem;
  }
  
  .message-item__content[aria-hidden="true"] {
    display: none;
  }
  
  .message-item__content a {
    color: var(--clr-sky-600);
  }
  
  .message-item__content a:hover {
    text-decoration: underline;
  }
  
  .message-item__content img {
    max-width: 100% !important;
  }
  
  .message-item__content pre {
    white-space: pre-line !important;
  }
  
  .view-all-messages::before,
  .view-all-messages::after {
    content: '';
    flex-grow: 1;
    height: 1px;
    background-color: var(--clr-gray-400);
  }
  
  .view-all-messages .btn {
    margin-inline: 3rem;
  }
  
  .case-info__item * {
    flex: 0 1 50%;
    letter-spacing: -0.16px;
  }
  
  .case-info__item select {
    max-width: 80px;
  }
  
  .case-status__closed[aria-hidden="true"] {
    display: none;
  }
  
  .cc-recipients__button[data-action="edit"] {
    padding-inline: .5rem;
  }
  
  .case-info__list {
    padding-left: 1.5rem;
    list-style-type: disc;
    word-break: break-all;
  }
  
  .case-info__list.hide {
    display: none;
  }
  
  .case-info__block[data-info="cc-recipients"] .base-input {
    display: none;
  }
  
  .case-info__block[data-info="cc-recipients"] .base-input.show {
    display: block;
  }
  
  .case-info__list li::marker {
    font-size: 13px;
  }
  
  .cc-recipients__button[aria-hidden="true"] {
    display: none;
  }
  
  /* File attachment */
  #tab-content__file-attachment {
    max-width: 808px;
  }
  
  .attachment-item {
    padding: .5rem 1rem;
    border: 1px solid var(--clr-neutral-250);
  }
  
  .attachment-item > *:first-child {
    flex: 5;
  }
  
  /* URL text results, Virus file, Email results */
  .tablist > .tab-item {
    --gap: .2rem;
    border-color: var(--clr-neutral-250);
  }
  
  .tablist > .tab-item[aria-selected="true"].checked-forward::before {
    border-color: var(--clr-gray-900);
    translate: 0 -1.5px;
  }
  
  .case-detail__pagination {
    margin-top: auto;
  }
  
  .case-detail__pagination .pagination {
    background-color: transparent;
  }
  
  .case-detail__pagination .pagination-icon:disabled path {
    fill: var(--clr-neutral-350);
  }
  
  button[data-action="open-escalate-modal"]:disabled:hover ~ .escalation-disabled-message {
    display: block;
  } 
  
  #escalation-modal__virus-file {
    width: clamp(330px, 70vw, 664px);
  }
  
  #escalation-modal__email-results,
  #escalation-modal__url-results {
    width: clamp(330px, 70vw, 704px);
  }
  
  #escalation-modal__unknown-password {
    width: clamp(330px, 70vw, 714px);
  
    & .modal-content {
      max-width: 448px;
    }
  
    & .base-input > input {
      height: 3rem;
      padding-inline: 1rem;
    }
  }
  
  #escalation-modal__attk-logs {
    width: clamp(330px, 70vw, 390px);
    min-height: 174px;
  
    & button {
      width: 162px;
      margin-left: auto;
    }
  }
  
  .modal-content .base-input label {
    font-size: var(--fs-300);
    font-family: var(--ff-open-sans);
  }
  
  .modal-content .dropdown {
    max-width: 318px;
  }
  
  .case-detail .dropdown__button {
    height: 2.5rem;
  }
  
  #tab-content__attk-logs .dropdown {
    max-width: 254px;
  }
  
  .attk-generate-package__button {
    border: 1px solid var(--clr-red-700)
  }
  
  .attk-logs__step[aria-hidden="true"] {
    display: none;
  }
  
  .attk-logs__step[data-step="3"] {
    max-width: 600px;
  }
  
  .attk-logs__step[data-step="4"] {
    max-width: 808px;
  }
   
  .attk-logs__step .base-checkbox input[type='checkbox'] {
    margin-inline: auto;
  }
  
  .attk-logs__step th[aria-hidden="true"],
  .attk-logs__step td[aria-hidden="true"] {
    display: none;
  } </style>

        <!--[if lt IE 9]>
            <script defer src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
        <![endif]-->

        <!--[if lt IE 10]>
            <script defer src="/js/formdata.js"></script>
        <![endif]-->
      </head>
      <body>
        <div data-editorblocktype="Header" data-record-id="beaa0e99-16aa-ee11-be37-0022482b2db5" > <style>
  header {
    top: 0;
    min-height: 4.5rem;
    padding-inline: 2rem;
    z-index: 999;
  }

  header>.container {
    margin-inline: -1.5rem;
    padding-inline: 1.5rem;
    max-width: var(--container-size-90);
  }

  .header-logo {
    gap: 0.75rem;
  }

  .logo {
    width: 100px;
  }

  .header-logo .split {
    width: 1px;
    height: 1.5rem;
  }

  .header-nav {
    gap: 4rem;
  }

  .header-nav__center {
    gap: 1.875rem;
  }

  .header-nav__right {
    gap: 1.75rem;
  }

  .nav-item:not(.login-btn) {
    user-select: none;
    border-bottom: 1px solid var(--clr-transparent);
    color: var(--clr-white);
    font-family: var(--ff-open-sans);
    cursor: pointer;
  }

  .nav-item:not(.login-user, .nav-user, .hamburger):hover,
  .nav-item:has(button[aria-selected='true']) {
    border-color: var(--clr-red-700);
  }

  .nav-item .arrow-backward {
    display: flex;
    align-items: center;
    gap: 0.5rem;
  }

  .nav-item .search-icon {
    fill: var(--clr-white);
  }

  .login-btn a {
    cursor: pointer;
    line-height: 1;
  }

  .nav-item.login-btn a:hover {
    background-color: var(--clr-red-800);
  }

  .nav-user__container {
    gap: 0.5rem;
  }

  .nav-user__container .arrow-backward::after {
    margin: 2px;
  }

  .nav-user__avatar {
    --size: 1.75rem;
    border: 2px solid var(--clr-red-700);
  }

  .nav-user__name {
    letter-spacing: 0.16px;
  }

  .nav-user__menu {
    top: 3rem;
    right: 0;
    min-width: 288px;
    border: none;
    z-index: 999;
  }

  .nav-user__menu>li {
    transition-property: var(--transition-colors);
    transition-duration: var(--duration-150);
    transition-timing-function: var(--ease-in-out);
  }

  .nav-user__menu>li:hover {
    background-color: var(--clr-gray-450);
  }

  .nav-user__menu a {
    width: 100%;
    padding: 0.75rem;
  }

  .nav-item.hamburger {
    display: none;
    user-select: none;
  }

  .hamburger-menu {
    --size: 1.25rem;
  }

  .hamburger-menu span {
    display: block;
    width: 1.25rem;
    height: 2px;
    z-index: 1001;
  }

  .hamburger-menu span,
  .hamburger-menu span:before,
  .hamburger-menu span:after {
    transition-property: var(--transition-transform);
    transition-duration: var(--duration-200);
    transition-timing-function: var(--ease-in-out);
  }

  .hamburger-menu span:before,
  .hamburger-menu span:after {
    content: '';
    position: absolute;
    display: block;
    width: inherit;
    height: inherit;
    background-color: var(--clr-white);
  }

  .hamburger-menu span:before {
    translate: 0 -7px;
  }

  .hamburger-menu span:after {
    translate: 0 7px;
  }

  .hamburger-menu[aria-selected='true'] span {
    background-color: transparent;
  }

  .hamburger-menu[aria-selected='true'] span::before {
    translate: 0 0;
    rotate: -45deg;
  }

  .hamburger-menu[aria-selected='true'] span::after {
    translate: 0 0;
    rotate: 45deg;
  }

  .mobile-nav {
    top: 100%;
    right: 0;
    width: 100%;
    height: calc(100vh - 72px);
    border-top: 1px solid var(--clr-gray-600);
    translate: 0 -120%;
    transition: 0.4s var(--ease-in-out);
    overflow: auto;
    z-index: -1;
  }

  .mobile-nav[aria-hidden='false'] {
    translate: 0 0;
  }

  .mobile-nav .nav-item {
    position: relative;
    transition:
      padding-left 0.3s ease,
      background-color 0.15s;
    border-bottom: 0;
  }

  .mobile-nav .nav-item>* {
    width: 100%;
    padding: 1.5rem;
  }

  .mobile-nav .nav-item>*[aria-selected='true'] {
    background-color: var(--clr-gray-450);
  }

  .mobile-nav .nav-item>button {
    transition-property: background-colors, padding-left;
    transition-duration: var(--duration-150);
    transition-timing-function: var(--ease);
  }

  .mobile-nav .nav-item>*:hover {
    background-color: var(--clr-gray-450);
  }

  .mobile-nav .nav-item>button:hover,
  .mobile-nav .nav-item>a:hover {
    padding-left: 2.5rem;
  }

  .mobile-nav .search-form__dropdown-list {
    top: 72px;
    bottom: 0;
    max-height: unset;
    opacity: 1;
    visibility: visible;
  }

  .mobile-nav .search-form__dropdown-list li {
    padding: 0;
  }

  .mobile-nav .search-form__dropdown-list a {
    width: 100%;
    padding: 0.75rem 1.5rem;
  }

  .mobile-nav .resources-list a,
  .mobile-nav .user-menu a {
    width: 100%;
    padding: 1.5rem;
    padding-left: 3rem;
  }

  .mobile-nav *[aria-hidden='true'] {
    display: none;
  }

  .mobile-nav .resources-list .nav-item {
    padding: 0;
  }

  .panel-container {
    display: none;
    align-items: stretch;
    flex-grow: 1;
    max-width: var(--container-size-90);
    padding: 1.5rem;
    font-family: var(--ff-open-sans);
  }

  .panel-container[aria-hidden='false'] {
    display: flex;
  }

  .panel-container.resources {
    gap: 1.5rem;
  }

  .panel-left {
    flex: 0 1 256px;
  }

  .panel-center {
    flex: 0 1 293px;
  }

  .panel-right {
    flex: 0 1 741px;
  }

  .panel-left>div {
    padding: 0.5rem;
    border: 1px solid var(--clr-red-700);
  }

  .panel-center {
    gap: 0.5rem;
  }

  .panel-center>li {
    padding: 0.5rem;
    border-radius: var(--rounded);
    transition-property: var(--transition-colors);
    transition-duration: var(--duration-150);
    transition-timing-function: var(--ease-in-out);
    cursor: pointer;
  }

  .panel-center li:hover {
    background-color: var(--clr-gray-600);
  }

  .panel-center li.active {
    font-family: var(--ff-open-sans-700);
  }

  .panel-right h3 {
    margin-bottom: 0.5rem;
  }

  .panel-right p {
    margin-bottom: 1.5rem;
  }

  .panel-container.product {
    gap: 1.5rem;
    padding-inline: 4rem;
  }

  .panel-featured {
    flex: 0 1 288px;
    padding: 2rem 1rem;
  }

  .panel-featured .divider {
    height: 2px;
  }

  .panel-featured .feature-list {
    gap: 0.75rem;
    margin-top: 1.25rem;
  }

  .feature-list li {
    padding: 0.3rem 0.5rem;
    border: 1px solid var(--clr-transparent);
    border-radius: var(--rounded-8);
    transition-property: var(--transition-colors);
    transition-duration: var(--duration-150);
    transition-timing-function: var(--ease-in-out);
  }

  .feature-list li:hover {
    border-color: var(--clr-gray-400);
    background-color: var(--clr-neutral-400);
  }

  .feature-list a {
    width: 100%;
  }

  .panel-products {
    flex: 1;
    column-count: 3;
  }

  .first-char {
    font-size: var(--fs-300);
    font-family: var(--ff-open-sans-700);
  }

  .product-item {
    display: flex;
    gap: 1rem;
    padding: 0.4rem 0.5rem;
    border-radius: var(--rounded);
  }

  .product-item .char {
    display: grid;
    place-items: center;
    min-width: 1.5rem;
    height: 1.5rem;
    font-family: var(--ff-open-sans-700);
  }

  .product-item a {
    width: 100%;
    color: var(--clr-white);
  }

  .product-item:hover {
    font-weight: 700;
  }

  .panel-container.search {
    padding-block: 2.25rem;
    border-color: transparent;
  }

  .nav-panel__modal {
    top: 100%;
    width: 100%;
    right: 0;
    left: 0;
    margin: 0 auto;
    box-shadow: var(--box-shadow-2);
    z-index: 666;
  }

  @media only screen and (max-width: 1480px) {
    .nav-item.nav-user {
      position: unset;
    }

    .nav-user__menu {
      top: 100%;
    }
  }

  @media only screen and (max-width: 1150px) {
    .header-nav__center {
      display: none;
    }

    .nav-item.hamburger {
      display: block;
    }

    .panel-container.product,
    .panel-container.resources {
      display: none;
    }
  }

  @media only screen and (max-width: 860px) {
    .nav-panel__modal {
      border-radius: 0;
    }
  }

  @media only screen and (max-width: 580px) {
    header {
      padding-inline: 1.5rem;
    }

    .nav-item.login-btn {
      display: none;
    }

    .nav-user {
      display: none;
    }
  }
</style>

<header class="sticky flex-center bg-black">
  <div class="container flex items-center self-stretch justify-between bg-black">
    <a class="header-logo flex-center" href="/">
      <div class="logo flex">
        <img src="/trendmicro_logo.webp" alt="Trend Micro Business Success Portal" />
      </div>
      <div class="split bg-gray-400 self-center" role="separator"></div>
      <p class="text-white ff-open-sans-600">Business Success</p>
    </a>
    <nav aria-label="Main navigation" class="header-nav flex items-center" role="tablist">
      <ul class="header-nav__center flex items-center">
        <li class="nav-item">
          <button id="tab__product" class="arrow-backward" role="tab" tabindex="0" aria-label="Open Products submenu"
            aria-selected="false" aria-expanded="false" aria-haspopup="true" aria-controls="nav-product__panel">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9Qcm9kdWN0cycgdHlwZTogJ3RleHQnICV9" data-record-id="fa19161f-a4aa-ee11-be37-0022482b2485" data-ppid="fa19161f-a4aa-ee11-be37-0022482b2485" >Products</span>
          </button>
        </li>
        <li class="nav-item">
          <a href="https://trendpartner-stg.powerappsportals.com/threat">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9UaHJlYXRfSGVscCcgdHlwZTogJ3RleHQnICV9" data-record-id="e74eee3e-b1aa-ee11-be37-0022482c8a35" data-ppid="e74eee3e-b1aa-ee11-be37-0022482c8a35" >Threat Help</span>
          </a>
        </li>
        <li class="nav-item">
          <a href="https://trendpartner-stg.powerappsportals.com/new-case">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9PcGVuIGEgQ2FzZScgdHlwZTogJ3RleHQnICV9" data-record-id="20437714-bcaa-ee11-be37-0022482c8a35" data-ppid="20437714-bcaa-ee11-be37-0022482c8a35" >Open a Case</span>
          </a>
        </li>
        <li class="nav-item">
          <button id="tab__resources" class="arrow-backward" role="tab" tabindex="0" aria-label="Open Resources submenu"
            aria-selected="false" aria-expanded="false" aria-haspopup="true" aria-controls="nav-resource__panel">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9SZXNvdXJjZXMnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="4329e794-bcaa-ee11-be37-0022482c8a35" data-ppid="4329e794-bcaa-ee11-be37-0022482c8a35" >Resources</span>
          </button>
        </li>
        <li class="nav-item">
          <a href="https://trendpartner-stg.powerappsportals.com/contactus">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9Db250YWN0JyB0eXBlOiAndGV4dCcgJX0=" data-record-id="05d23ff6-bcaa-ee11-be37-0022482c8a35" data-ppid="05d23ff6-bcaa-ee11-be37-0022482c8a35" >Contact</span>
          </a>
        </li>
      </ul>
      <ul class="header-nav__right flex items-center">
        <li class="nav-item hamburger">
          <button id="tab__hamburger" role="tab" tabindex="0" aria-label="Open mobile navigation menu"
            aria-selected="false" aria-expanded="false" aria-haspopup="true" aria-controls="nav-menu__mobile"
            class="hamburger-menu square-shape relative flex-center">
            <span class="bg-white"></span>
          </button>
        </li>
        <li class="nav-item">
          <button id="tab__search" role="tab" tabindex="0" aria-label="Open search bar" aria-selected="false"
            aria-expanded="false" aria-haspopup="true" aria-controls="nav-search__panel">
            <svg class="search-icon" width="24" height="24" viewBox="0 0 24 24" fill="none"
              xmlns="http://www.w3.org/2000/svg">
              <path
                d="M22.9986 21.065L17.1565 15.2228C18.2358 13.7636 18.8831 11.9273 18.8831 9.94153C18.8831 5.00312 14.8799 1 9.94153 1C5.00312 1 1 5.00312 1 9.94153C1 14.8799 5.00312 18.8831 9.94153 18.8831C11.9287 18.8831 13.7636 18.2358 15.2475 17.14L15.2228 17.1578L21.065 23L22.9986 21.065ZM9.97033 16.8273C6.18389 16.8273 3.11333 13.7568 3.11333 9.97033C3.11333 6.18389 6.18389 3.11333 9.97033 3.11333C13.7568 3.11333 16.8273 6.18389 16.8273 9.97033C16.8273 13.7568 13.7568 16.8273 9.97033 16.8273Z" />
            </svg>
          </button>
        </li>
        
        <li class="nav-item nav-user relative">
          <div id="tab__user" class="nav-user__container flex items-center ff-inter" role="button"
            aria-label="Open user submenu" aria-selected="false" aria-expanded="false" aria-haspopup="true"
            aria-controls="nav-user__menu">
            <div class="nav-user__avatar square-shape grid place-items-center text-white ff-inter rounded-full">
             <span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3t1c2VyLmZ1bGxuYW1lIHwgc2xpY2U6IDB9fQ==">J</span>
            </div>
            <div>
              <div class="nav-user__name ff-open-sans"><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3t1c2VyLmZ1bGxuYW1lfX0=">John Doe</span></div>
            </div>
            <div class="arrow-backward grid"></div>
          </div>
          <ul id="nav-user__menu"
            class="nav-user__menu absolute bg-black ff-inter-light rounded transition-display hidden" role="menu"
            aria-hidden="true" aria-labelledby="tab__user">
            <li role="presentation">
              <a role="menuitem" href="#"><span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9EYXNoYm9hcmQnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="e1c14240-beaa-ee11-be37-0022482b2485" data-ppid="e1c14240-beaa-ee11-be37-0022482b2485" >Dashboard</span></a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="#"><span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9Qcm9maWxlJyB0eXBlOiAndGV4dCcgJX0=" data-record-id="2f1044ae-beaa-ee11-be37-0022482b2485" data-ppid="2f1044ae-beaa-ee11-be37-0022482b2485" >Profile</span></a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="#">Switch Account</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="/Account/Login/LogOff"><span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9Mb2dvdXQnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="9c976c5d-bfaa-ee11-be37-0022482b2485" data-ppid="9c976c5d-bfaa-ee11-be37-0022482b2485" >Logout</span></a>
            </li>
          </ul>
        </li>
        
      </ul>
    </nav>

    <div class="nav-panel__modal absolute flex justify-center bg-black text-white hidden transition-display"
      role="dialog" aria-modal="true" aria-hidden="true">
      <div id="nav-product__panel" class="panel-container product" aria-hidden="true" aria-labelledby="tab__product">
        <div class="panel-featured text-black rounded-6 bg-neutral-250">
          <h4 class="feature-title fs-350 ff-open-sans-600">Featured</h4>
          <div role="separator" class="divider bg-red-700"></div>
          <ul class="feature-list flex flex-col" role="menu">
            <li role="presentation">
              <a role="menuitem" href="">Trend Vision One</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Apex One</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Apex One as a Service</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Apex Central</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Cloud App Security</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Cloud One - Endpoint and Workload Security</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Deep Security</a>
            </li>
            <li role="presentation">
              <a role="menuitem" href="">Trend Micro Email Security</a>
            </li>
          </ul>
        </div>
        <div class="panel-products"></div>
      </div>

      <div id="nav-resource__panel" class="panel-container resources justify-between" aria-hidden="true"
        aria-labelledby="tab__resources">
        <div class="panel-left">
          <div class="text-black rounded-8 bg-neutral-400">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hlYWRlci9SZXNvdXJjZXMnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="4329e794-bcaa-ee11-be37-0022482c8a35" data-ppid="4329e794-bcaa-ee11-be37-0022482c8a35" >Resources</span>
          </div>
        </div>
        <hr role="separator" />
        <ul class="panel-center flex flex-col">
          <li class="active" data-value="Automation Center">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hvbWUvQXV0b21hdGlvbiBDZW50ZXInIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="085e3e32-ccaa-ee11-be37-0022482c8a35" data-ppid="085e3e32-ccaa-ee11-be37-0022482c8a35" >Automation Center</span>
          </li>
          <li data-value="Education Portal">Education Portal</li>
          <li data-value="Online Help Center">Online Help Center</li>
          <li data-value="Service Status">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hvbWUvU2VydmljZSBTdGF0dXMnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="87f27a27-cbaa-ee11-be37-0022482b2db5" data-ppid="87f27a27-cbaa-ee11-be37-0022482b2db5" >Service Status</span>
          </li>
          <li data-value="TrendConnect">TrendConnect</li>
          <li data-value="Trend Business Community">
            Trend Business Community
          </li>
        </ul>
        <hr />
        <div class="panel-right">
          <h3 class="fs-350 ff-open-sans-700">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hvbWUvRm9ydW0nIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="12876554-d8aa-ee11-be37-0022482b2485" data-ppid="12876554-d8aa-ee11-be37-0022482b2485" >Forum</span>
          </h3>
          <p>
            Take your security operations to the next level with our APIs
            and tools
          </p>
          <a class="btn primary fs-200" href="/" role="button">
            <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0hvbWUvTGVhcm4gTW9yZScgdHlwZTogJ3RleHQnICV9" data-record-id="72a7bccc-d8aa-ee11-be37-0022482b2485" data-ppid="72a7bccc-d8aa-ee11-be37-0022482b2485" >Learn More</span>
          </a>
        </div>
      </div>

      <div id="nav-search__panel" class="panel-container search flex-center" aria-hidden="true"
        aria-labelledby="tab__search">
        <!-- Navigation Search Dynamic created -->
      </div>
    </div>

    <nav id="nav-menu__mobile" role="menu" class="mobile-nav absolute bg-black" aria-modal="true"
      aria-label="Mobile navigation" aria-hidden="true" aria-labelledby="tab__hamburger">
      <ul class="relative">
        <li class="nav-item">
          <button id="mobile-tab__product" class="arrow-backward justify-between" role="tab"
            aria-label="Open mobile products submenu" aria-selected="false" aria-expanded="false"
            aria-controls="mobile-panel__product">
            Products
          </button>
        </li>
        <li class="nav-item">
          <a href="/threat">Threat Help</a>
        </li>
        <li class="nav-item">
          <a href="/new-case">Open a Case</a>
        </li>
        <li class="nav-item">
          <button id="mobile-tab__resources" class="arrow-backward justify-between" role="tab"
            aria-label="Open mobile resources submenu" aria-selected="false" aria-expanded="false"
            aria-controls="mobile-panel__resources">
            Resources
          </button>
        </li>

        <li>
          <ul id="mobile-panel__resources" class="resources-list" aria-hidden="true"
            aria-labelledby="mobile-tab__resources">
            <li class="nav-item">
              <a href="https://status.trendmicro.com/s/en-US/" target="_blank">Services</a>
            </li>
            <li class="nav-item">
              <a href="https://www.trendmicro.com/" target="_blank">Download Center</a>
            </li>
            <li class="nav-item">
              <a href="https://docs.trendmicro.com/en-US/documentation/" target="_blank">Online Help Center</a>
            </li>
            <li class="nav-item">
              <a href="https://success.trendmicro.com/community/s/" target="_blank">Trend Business Community</a>
            </li>
          </ul>
        </li>

        <li class="nav-item">
          <a href="/contactus">Contact</a>
        </li>

        
        <li class="nav-item">
          <div id="mobile-tab__user" class="nav-user__container flex items-center ff-inter" role="button"
            aria-label="Open mobile user submenu" aria-selected="false" aria-expanded="false"
            aria-controls="mobile-panel__user">
            <div class="nav-user__avatar square-shape grid place-items-center text-white ff-inter rounded-full">
             <span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3t1c2VyLmZ1bGxuYW1lIHwgc2xpY2U6IDB9fQ==">J</span>
            </div>
            <div>
              <div class="nav-user__name ff-open-sans"><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3t1c2VyLmZ1bGxuYW1lfX0=">John Doe</span></div>
            </div>
            <div class="arrow-backward grid"></div>
          </div>
        </li>
        

        <li>
          <ul id="mobile-panel__user" class="user-menu" aria-hidden="true" aria-labelledby="mobile-tab__user">
            <li class="nav-item"><a href="/dashboard">Dashboard</a></li>
            <li class="nav-item"><a href="/profile">Profile</a></li>
            <li class="nav-item"><a href="/switch-account">Switch Account</a></li>
            <li class="nav-item"><a href="#">Sign out</a></li>
          </ul>
        </li>
      </ul>
      <div id="mobile-panel__product" class="search-form__dropdown-list" aria-hidden="true"
        aria-labelledby="mobile-tab__product">
        <!-- Dynamically add product list data -->
      </div>
    </nav>
  </div>
</header>

<div class="header-backdrop backdrop"></div>

<script type="module" src="/helper.js"></script>
<script type="module" src="/class.js"></script>
<script type="module" src="/static_data.js"></script>

<script type="module">
  import { getElement } from '/helper.js';
  import { SearchBar } from '/class.js';
  import { navResources, productsList } from '/static_data.js';

  // Global variable
  // const abbvName = '<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3t1c2VyLmZ1bGxuYW1lfX0=">John Doe</span>'[0];
  const body = getElement('body');
  const modal = getElement('.nav-panel__modal');
  const backdrop = getElement('.header-backdrop.backdrop');
  const resourcePanelCenter = getElement('#nav-resource__panel .panel-center');

  // Define handler
  const setNavItemAttribute = (element, isSelected) => {
    if (!element) return;

    const isOpen = isSelected === 'open';

    element?.setAttribute('aria-selected', isOpen);
    element?.setAttribute('aria-expanded', isOpen);
  };

  const setNavModalAttribute = (modalContent, isSelected) => {
    if (!modalContent) return;

    const isClose = isSelected === 'close';

    modal?.setAttribute('aria-hidden', isClose);
    modalContent?.setAttribute('aria-hidden', isClose);
    backdrop?.classList.toggle('active');
  };

  const closeNavModal = (element) => {
    if (element) {
      const controlledId = element?.getAttribute('aria-controls');
      const activeModal = getElement(`#${controlledId}`);

      setNavItemAttribute(element, 'close');
      setNavModalAttribute(activeModal, 'close');
    }
  };

  const handleClickOnBackdrop = () => {
    const selectedNav = getElement('.header-nav [aria-selected="true"]');
    closeNavModal(selectedNav);
  };

  const handleClickOnMobileNav = (e) => {
    const target = e.target.closest('[aria-expanded]');

    if (!target) return;

    if (target.id === 'mobile-tab__product')
      target.closest('.mobile-nav')?.classList.toggle('overflow-hidden');

    // Find controlled modal
    const controlId = target.getAttribute('aria-controls');
    const controlledModal = getElement(`#${controlId}`);

    if (target.getAttribute('aria-selected') === 'false') {
      setNavItemAttribute(target, 'open');
      controlledModal.setAttribute('aria-hidden', false);
    } else {
      setNavItemAttribute(target, 'close');
      controlledModal.setAttribute('aria-hidden', true);
    }
  };

  const handleClickOnNav = (e) => {
    e.stopPropagation();

    // Check is click on nav items which needs to open modal
    const target = e.target.closest('[aria-haspopup]');

    if (!target) return;

    // Find controlled modal
    const controlId = target.getAttribute('aria-controls');
    const controlledModal = getElement(`#${controlId}`);

    // --------Mobile view--------
    // If click on hamburger icon
    if (target.id === 'tab__hamburger') {
      const isMenuOpened = target.getAttribute('aria-selected') === 'true';

      // Handle if hamburger menu is opened, if true, close all the panel and reset active state
      if (isMenuOpened) {
        const openedNavItems = getElement(
          '.mobile-nav [aria-selected="true"]'
        );

        openedNavItems?.forEach((navItem) => {
          const controlledId = navItem.getAttribute('aria-controls');
          const openedModal = getElement(`#${controlledId}`);

          setNavItemAttribute(navItem, 'close');
          openedModal?.setAttribute('aria-hidden', true);
        });

        getElement('.mobile-nav')?.classList?.remove('overflow-hidden');
      }

      setNavItemAttribute(target, isMenuOpened ? 'close' : 'open');
      controlledModal.setAttribute('aria-hidden', isMenuOpened);
      body.classList.toggle('overflow-hidden');

      return;
    }

    // --------Desktop view--------
    // Find is any selected nav item
    const selectedItem = getElement('.header-nav [aria-selected="true"]');

    // If the selected nav item was found, remove modal and active state
    if (selectedItem && selectedItem !== target) closeNavModal(selectedItem);

    if (target.getAttribute('aria-selected') === 'false') {
      setNavItemAttribute(target, 'open');
      setNavModalAttribute(controlledModal, 'open');
    } else {
      setNavItemAttribute(target, 'close');
      setNavModalAttribute(controlledModal, 'close');
    }
  };

  const handleClickOnNavResources = (e) => {
    const target = e.target;

    if (target.localName !== 'li' || target.className.includes('active')) return;

    // Get selected list item's value
    const value = target.dataset.value;
    const selectedResource = navResources.find(
      (resource) => resource.title === value
    );

    // Retrieve content from resource, change content
    if (selectedResource) {
      const { title, description, url } = selectedResource;
      const resourcePanelRight = getElement('#nav-resource__panel .panel-right');
      const panelRightChildrenArr = [...resourcePanelRight.children];
      const heading = panelRightChildrenArr.find(
        (element) => element.localName === 'h3'
      );
      const des = panelRightChildrenArr.find(
        (element) => element.localName === 'p'
      );
      const button = panelRightChildrenArr.find(element => element.localName === 'a');

      if (heading && des) {
        heading.textContent = title;
        des.textContent = description;
        button.href = url;
      }
    }

    // Toggle list item active state
    const anyActiveItem = resourcePanelCenter.querySelector('li.active');
    if (anyActiveItem) anyActiveItem.classList.remove('active');

    target.classList.add('active');
  };

  const generateMobileNavProductsList = () => {
    const results = productsList.reduce((accumulator, current) => {
      const listTemp = current?.products.reduce((accumulator, current) => {
        const temp = `
        <li role='listitem' data-value="${current?.productName}">
          <a href=/${current?.link}>${current?.productName}</a>
        </li>
      `;

        return accumulator + temp;
      }, '');

      const productsTemp = `<ul role='list'><li>${current?.char}</li>${listTemp}</ul>`;

      return accumulator + productsTemp;
    }, '');

    return results;
  };

  const generateProductsList = () => {
    const results = productsList.reduce((accumulator, current) => {
      const firstChar = current?.char || '';

      const productsTemp = current?.products.reduce(
        (accumulator, current, index) => {
          const temp = `
        <div class='product-item'>
          <span class='char'>${index === 0 ? firstChar : ''}</span>
          <a href=/${current?.link}>${current?.productName}</a>
          
        </div>
      `;
          return accumulator + temp;
        },
        ''
      );

      return accumulator + productsTemp;
    }, '');

    return results;
  };

  const headerInitiation = () => {
    // Add product list into product tab
    const productTemp = generateProductsList();
    const productPanel = getElement('.panel-products');
    productPanel?.insertAdjacentHTML('afterbegin', productTemp);

    // Select search container element
    const navSearchContainer = getElement('#nav-search__panel');

    // Initiate Search bar instances
    const navSearch = new SearchBar('nav', navSearchContainer);

    // Render products list in the search bar
    navSearch.renderProductList(productsList);

    // Generate product list markup then put in mobile nav
    const markup = generateMobileNavProductsList();
    const mobileNavProduct = getElement('.mobile-nav .search-form__dropdown-list');
    mobileNavProduct.insertAdjacentHTML('beforeend', markup);

    // const abbvNameElements = getElement('.nav-user__avatar');
    // abbvNameElements.forEach(element => element.textContent = abbvName);

    // Add handler
    backdrop?.addEventListener('click', handleClickOnBackdrop);
    resourcePanelCenter?.addEventListener('mouseover', handleClickOnNavResources);
    getElement('.header-nav')?.addEventListener('click', handleClickOnNav);
    getElement('.mobile-nav')?.addEventListener('click', handleClickOnMobileNav);
  };

  headerInitiation();

</script> </div>
        <!-- Default studio template. Please do not modify -->
<div id="mainContent" class="wrapper-body" role="main">
    <div class="page-copy">
        <div data-editorblocktype="PageCopy" data-liquidexpressionvalue="eyUgZWRpdGFibGUgcGFnZSAnYWR4X2NvcHknIHR5cGU6ICdodG1sJywgbGlxdWlkOiB0cnVlICV9" data-record-id="4f75de4d-a711-874a-dc90-f0642afad5de" data-ppid="4f75de4d-a711-874a-dc90-f0642afad5de" > 
 
<div class="case-detail flex flex-col gap-4">
  <h3 class="fs-400 ff-inter-bold tracking"><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby50aXRsZX19"></span></h3>

  <section class="case-detail__content">
    <div class="case-detail__tabs flex items-center" role="tablist" aria-label="Case detail tabs">
      <div id="tab-title__case-detail" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="case-detail" role="tab" aria-selected="true" aria-controls="tab-content__case-detail">Case detail</div>
      <div id="tab-title__file-attachment" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="file-attachment" role="tab" aria-selected="false" aria-controls="tab-content__file-attachment">File attachment</div>
      <div id="tab-title__url-results" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="url-results" role="tab" aria-selected="false" aria-controls="tab-content__url-results">URL text results</div>
      <div id="tab-title__virus-file" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="virus-file" role="tab" aria-selected="false" aria-controls="tab-content__virus-file">Virus file results</div>
      <div id="tab-title__email-results" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="email-results" role="tab" aria-selected="false" aria-controls="tab-content__email-results">Email results</div>
      <div id="tab-title__unknown-password" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="unknown-password" role="tab" aria-selected="false" aria-controls="tab-content__unknown-password">Unknown Password</div>
      <div id="tab-title__attk-logs" class="tab-item flex-center fs-300 ff-open-sans bg-neutral-200 tracking cursor-pointer transition-display" data-tab="attk-logs" role="tab" aria-selected="false" aria-controls="tab-content__attk-logs">Attk logs</div>
    </div>

    <div class="case-detail__tab-content flex flex-col bg-neutral-100">
      <!-- Case detail -->
      <div id="tab-content__case-detail" class="tab-content flex gap-6" aria-hidden="false" aria-labelledby="tab-title__case-detail">
        <section class="tab-content__left flex flex-col gap-4">
          <div class="flex flex-col gap-2">
            <div class="base-input">
              <label for="case-detail__response" class="fs-300 ff-open-sans-600 tracking">Leave a response</label>
              <textarea name="response" id="case-detail__response" class="bg-neutral-100 fs-300 ff-open-sans rounded tracking" placeholder="Please enter the details of your request"></textarea>
            </div>
            <div id="case-detail__attachment" class="case-detail__attachment" aria-hidden="true" aria-labelledby="add-attachment"></div>
            <div class="response-btns flex items-center justify-end gap-4">
              <button id="add-attachment" class="btn ff-inter fs-200 text-gray-400 transition-colors" aria-controls="case-detail__attachment">Add attachment</button>
              <button class="btn ff-inter fs-200 text-gray-400 transition-colors" data-action="post response">Post</button>
            </div>
          </div>

          <div class="base-radio flex items-center justify-between">
            <div class="radios flex items-center gap-4">
              <div class="flex items-center gap-1 cursor-pointer">
                <input type="radio" name="message" id="newest-message" class="square-shape" checked />
                <label for="newest-message" class="fs-300 ff-open-sans tracking">Newest</label>
              </div>
              <div class="flex items-center gap-1 cursor-pointer">
                <input type="radio" name="message" id="oldest-message" class="square-shape" />
                <label for="oldest-message" class="fs-300 ff-open-sans tracking">Oldest</label>
              </div>
            </div>
            <button class="expand-all-messages btn ff-inter fs-200 text-gray-400 transition-colors">Expand all</button>
          </div>

          <div class="messages-container flex flex-col gap-2">
            <div class="message-item flex flex-col gap-4 p-4 rounded cursor-pointer" aria-expanded="true">
              <div class="message-item__info flex items-center justify-between ff-open-sans">
                <div class="flex items-center gap-2">
                  <div class="message-item__abbv-name fs-200 square-shape flex-center bg-neutral-300 rounded-full">
                    <span>J</span>
                  </div>
                  <div class="message-item__subject">
                    <h5 class="fs-300 ff-open-sans-600 tracking">{John} comment</h5>
                  </div>
                </div>
                <div class="date-time-location text-gray-300 fs-200">2024/04/04 19:25 AM (Asia/Manila)</div>
              </div>
              <div class="message-item__content fs-300 ff-open-sans tracking text-overflow-ellipsis" aria-hidden="false">
                Total Number of File Submitted:2
                <br />
                Number of file under analyzing: 2
                <br /><br />
                We are in the process of analyzing the undecided files, url and emails.
                <br /><br />
                Once analysis of the undecided files is completed, we will update you with the results.
              </div>
            </div>

            <div class="message-item flex flex-col gap-4 p-4 rounded cursor-pointer" aria-expanded="false">
              <div class="message-item__info flex items-center justify-between ff-open-sans">
                <div class="flex items-center gap-2">
                  <div class="message-item__abbv-name fs-200 square-shape flex-center bg-neutral-300 rounded-full">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <mask id="mask0_2130_23753" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24">
                        <circle cx="12" cy="12" r="12" fill="#C4C4C4" />
                      </mask>
                      <g mask="url(#mask0_2130_23753)">
                        <ellipse cx="11.52" cy="12" rx="11.52" ry="12" fill="white" />
                        <path d="M7.69874 13.0148C7.69814 13.0089 7.69814 13.0029 7.69874 12.9969L7.71926 12.9412L7.73979 12.8898L7.75119 12.8675C7.8578 12.6082 7.98515 12.3576 8.13204 12.1179L8.19362 11.9929H7.55278L7.71014 11.6538C8.56794 11.4408 9.35404 11.0125 9.99069 10.4111H10.465L9.88578 11.627H10.8162L10.6452 11.9885H9.71702C9.47732 12.458 9.28191 12.9479 9.1332 13.4521C9.01918 14.1214 9.1332 14.6413 9.75579 14.8309C10.2124 14.9409 10.6915 14.9223 11.1378 14.7774C12.467 14.343 13.6519 13.5661 14.5678 12.5284C16.1185 10.7636 16.1505 8.9586 14.6362 8.51238C13.6669 8.21564 12.2986 8.54361 11.0306 9.28435C12.611 8.27588 14.3465 7.80734 15.5438 8.17102C15.7534 8.23208 15.9514 8.32629 16.1299 8.44991C15.2135 7.46493 13.9512 6.85421 12.5949 6.73961C11.2385 6.62501 9.88791 7.01496 8.81248 7.83165C7.73706 8.64833 7.01593 9.8317 6.793 11.1456C6.57008 12.4595 6.86174 13.8074 7.6098 14.9202C7.39542 14.4182 7.43647 13.7488 7.69874 13.0148Z" fill="#CC0000" />
                        <path d="M16.7076 9.19971C17.0702 10.1613 16.6164 11.5982 15.369 13.0172C13.4921 15.1501 10.5296 16.4419 8.75536 15.8998C8.55032 15.8382 8.3564 15.7456 8.18066 15.6253C9.10157 16.5774 10.3508 17.1612 11.6865 17.2638C13.0222 17.3663 14.3493 16.9803 15.4107 16.1804C16.4721 15.3806 17.1924 14.2238 17.432 12.9342C17.6716 11.6446 17.4135 10.3138 16.7076 9.19971Z" fill="#CC0000" />
                        <path d="M21.1199 31.4001H2.87988V25.5763C2.87988 22.1828 5.59134 19.418 8.92822 19.418H15.0715C18.4045 19.418 21.1199 22.1787 21.1199 25.5763V31.4001ZM3.67155 30.594H20.3282V25.5763C20.3282 22.6261 17.969 20.224 15.0715 20.224H8.92822C6.03072 20.224 3.67155 22.6261 3.67155 25.5763V30.594Z" fill="black" />
                        <path d="M17.7196 15.96C17.6483 15.96 17.5771 15.9398 17.5137 15.8995C17.3277 15.7826 17.2683 15.5368 17.3831 15.3474C17.9848 14.3398 18.3054 13.1871 18.3054 12.0224C18.3014 8.48375 15.4752 5.60611 11.9998 5.60611C8.52436 5.60611 5.69811 8.48375 5.69811 12.0224C5.69811 13.1911 6.01478 14.3398 6.6204 15.3474C6.7352 15.5368 6.67582 15.7867 6.48978 15.8995C6.30374 16.0164 6.05832 15.9559 5.94749 15.7665C5.27061 14.634 4.9104 13.3362 4.9104 12.0224C4.90645 8.04041 8.08895 4.80005 11.9998 4.80005C15.9106 4.80005 19.0931 8.04041 19.0931 12.0224C19.0931 13.3362 18.7369 14.634 18.056 15.7665C17.9848 15.8914 17.8542 15.96 17.7196 15.96Z" fill="black" />
                        <path d="M14.9052 16.6209H12.5381V15.1539H15.297H15.301H19.4256C19.7937 15.1539 20.0945 14.8476 20.0945 14.4728V12.2924C20.0945 11.9175 19.7937 11.6112 19.4256 11.6112H18.6498C18.432 11.6112 18.2539 11.4299 18.2539 11.2082C18.2539 10.9865 18.432 10.8052 18.6498 10.8052H19.4256C20.2291 10.8052 20.8862 11.4702 20.8862 12.2924V14.4728C20.8862 15.2909 20.2331 15.9599 19.4256 15.9599H15.4791L14.9052 16.6209Z" fill="black" />
                        <path d="M6.27995 15.9599H4.57391C3.77036 15.9599 3.11328 15.2909 3.11328 14.4728V12.2924C3.11328 11.4742 3.76641 10.8052 4.57391 10.8052H5.34974C5.56745 10.8052 5.74557 10.9865 5.74557 11.2082C5.74557 11.4299 5.56745 11.6112 5.34974 11.6112H4.57391C4.20578 11.6112 3.90495 11.9175 3.90495 12.2924V14.4728C3.90495 14.8476 4.20578 15.1539 4.57391 15.1539H6.27995C6.49766 15.1539 6.67578 15.3352 6.67578 15.5569C6.67578 15.7826 6.49766 15.9599 6.27995 15.9599Z" fill="black" />
                        <circle cx="12" cy="12" r="11.5" stroke="black" />
                      </g>
                    </svg>
                  </div>
                  <div class="message-item__subject">
                    <h5 class="fs-300 ff-open-sans-600 tracking">{John} comment</h5>
                  </div>
                </div>
                <div class="date-time-location text-gray-300 fs-200">2024/04/04 19:25 AM (Asia/Manila)</div>
              </div>
              <div class="message-item__content fs-300 ff-open-sans tracking text-overflow-ellipsis" aria-hidden="false">
                Total Number of File Submitted:2
                <br />
                Number of file under analyzing: 2
                <br /><br />
                We are in the process of analyzing the undecided files, url and emails.
                <br /><br />
                Once analysis of the undecided files is completed, we will update you with the results.
              </div>
            </div>

            <div class="message-item flex flex-col gap-4 p-4 rounded cursor-pointer" aria-expanded="false">
              <div class="message-item__info flex items-center justify-between ff-open-sans">
                <div class="flex items-center gap-2">
                  <div class="message-item__abbv-name fs-200 square-shape flex-center bg-neutral-300 rounded-full">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <mask id="mask0_2130_23753" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="24" height="24">
                        <circle cx="12" cy="12" r="12" fill="#C4C4C4" />
                      </mask>
                      <g mask="url(#mask0_2130_23753)">
                        <ellipse cx="11.52" cy="12" rx="11.52" ry="12" fill="white" />
                        <path d="M7.69874 13.0148C7.69814 13.0089 7.69814 13.0029 7.69874 12.9969L7.71926 12.9412L7.73979 12.8898L7.75119 12.8675C7.8578 12.6082 7.98515 12.3576 8.13204 12.1179L8.19362 11.9929H7.55278L7.71014 11.6538C8.56794 11.4408 9.35404 11.0125 9.99069 10.4111H10.465L9.88578 11.627H10.8162L10.6452 11.9885H9.71702C9.47732 12.458 9.28191 12.9479 9.1332 13.4521C9.01918 14.1214 9.1332 14.6413 9.75579 14.8309C10.2124 14.9409 10.6915 14.9223 11.1378 14.7774C12.467 14.343 13.6519 13.5661 14.5678 12.5284C16.1185 10.7636 16.1505 8.9586 14.6362 8.51238C13.6669 8.21564 12.2986 8.54361 11.0306 9.28435C12.611 8.27588 14.3465 7.80734 15.5438 8.17102C15.7534 8.23208 15.9514 8.32629 16.1299 8.44991C15.2135 7.46493 13.9512 6.85421 12.5949 6.73961C11.2385 6.62501 9.88791 7.01496 8.81248 7.83165C7.73706 8.64833 7.01593 9.8317 6.793 11.1456C6.57008 12.4595 6.86174 13.8074 7.6098 14.9202C7.39542 14.4182 7.43647 13.7488 7.69874 13.0148Z" fill="#CC0000" />
                        <path d="M16.7076 9.19971C17.0702 10.1613 16.6164 11.5982 15.369 13.0172C13.4921 15.1501 10.5296 16.4419 8.75536 15.8998C8.55032 15.8382 8.3564 15.7456 8.18066 15.6253C9.10157 16.5774 10.3508 17.1612 11.6865 17.2638C13.0222 17.3663 14.3493 16.9803 15.4107 16.1804C16.4721 15.3806 17.1924 14.2238 17.432 12.9342C17.6716 11.6446 17.4135 10.3138 16.7076 9.19971Z" fill="#CC0000" />
                        <path d="M21.1199 31.4001H2.87988V25.5763C2.87988 22.1828 5.59134 19.418 8.92822 19.418H15.0715C18.4045 19.418 21.1199 22.1787 21.1199 25.5763V31.4001ZM3.67155 30.594H20.3282V25.5763C20.3282 22.6261 17.969 20.224 15.0715 20.224H8.92822C6.03072 20.224 3.67155 22.6261 3.67155 25.5763V30.594Z" fill="black" />
                        <path d="M17.7196 15.96C17.6483 15.96 17.5771 15.9398 17.5137 15.8995C17.3277 15.7826 17.2683 15.5368 17.3831 15.3474C17.9848 14.3398 18.3054 13.1871 18.3054 12.0224C18.3014 8.48375 15.4752 5.60611 11.9998 5.60611C8.52436 5.60611 5.69811 8.48375 5.69811 12.0224C5.69811 13.1911 6.01478 14.3398 6.6204 15.3474C6.7352 15.5368 6.67582 15.7867 6.48978 15.8995C6.30374 16.0164 6.05832 15.9559 5.94749 15.7665C5.27061 14.634 4.9104 13.3362 4.9104 12.0224C4.90645 8.04041 8.08895 4.80005 11.9998 4.80005C15.9106 4.80005 19.0931 8.04041 19.0931 12.0224C19.0931 13.3362 18.7369 14.634 18.056 15.7665C17.9848 15.8914 17.8542 15.96 17.7196 15.96Z" fill="black" />
                        <path d="M14.9052 16.6209H12.5381V15.1539H15.297H15.301H19.4256C19.7937 15.1539 20.0945 14.8476 20.0945 14.4728V12.2924C20.0945 11.9175 19.7937 11.6112 19.4256 11.6112H18.6498C18.432 11.6112 18.2539 11.4299 18.2539 11.2082C18.2539 10.9865 18.432 10.8052 18.6498 10.8052H19.4256C20.2291 10.8052 20.8862 11.4702 20.8862 12.2924V14.4728C20.8862 15.2909 20.2331 15.9599 19.4256 15.9599H15.4791L14.9052 16.6209Z" fill="black" />
                        <path d="M6.27995 15.9599H4.57391C3.77036 15.9599 3.11328 15.2909 3.11328 14.4728V12.2924C3.11328 11.4742 3.76641 10.8052 4.57391 10.8052H5.34974C5.56745 10.8052 5.74557 10.9865 5.74557 11.2082C5.74557 11.4299 5.56745 11.6112 5.34974 11.6112H4.57391C4.20578 11.6112 3.90495 11.9175 3.90495 12.2924V14.4728C3.90495 14.8476 4.20578 15.1539 4.57391 15.1539H6.27995C6.49766 15.1539 6.67578 15.3352 6.67578 15.5569C6.67578 15.7826 6.49766 15.9599 6.27995 15.9599Z" fill="black" />
                        <circle cx="12" cy="12" r="11.5" stroke="black" />
                      </g>
                    </svg>
                  </div>
                  <div class="message-item__subject">
                    <h5 class="fs-300 ff-open-sans-600 tracking">{John} comment</h5>
                  </div>
                </div>
                <div class="date-time-location text-gray-300 fs-200">2024/04/04 19:25 AM (Asia/Manila)</div>
              </div>
              <div class="message-item__content fs-300 ff-open-sans tracking text-overflow-ellipsis" aria-hidden="true"></div>
            </div>
          </div>

          <div class="view-all-messages flex items-center">
            <button class="btn fs-200 ff-open-sans text-gray-400 cursor-pointer transition-colors">View all messages</button>
          </div>
        </section>
        <section class="tab-content__right flex flex-col gap-4 ff-open-sans fs-300">
          <div class="case-info__block flex flex-col gap-2 p-4 rounded">
            <h5 class="fs-325 ff-open-sans-600 tracking">Case Information</h5>
            <div class="case-info__item flex items-center">
              <span>Case number</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby50aWNrZXRudW1iZXJ9fQ=="></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Status</span>
              <select name="case-status" id="case-status__select" class="rounded tracking">
                <option value="open">Open</option>
                <option value="closed">Closed</option>
              </select>
              <span class="case-status__closed" aria-hidden="true">Closed</span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Sub status</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5zdGF0dXNjb2RlLmxhYmVsfX0="></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Created date</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5jcmVhdGVkb24gfGRhdGU6ICd5eXl5L01NL2RkJ319"></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Updated date</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5jcm1fbGFzdF9hY3Rpdml0eV91cGRhdGVfZGF0ZSB8ZGF0ZTogJ3l5eXkvTU0vZGQnfX0="></span></span>
            </div>
          </div>
          <div class="case-info__block flex flex-col gap-2 p-4 rounded">
            <h5 class="fs-325 ff-open-sans-600 tracking">Case Information</h5>
            <div class="case-info__item flex items-center">
              <span>Created by</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mb1snY29udGFjdC5maXJzdG5hbWUnXX19"></span>&nbsp;</span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Product</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mb1sncHJvZHVjdC5jcm1fbmFtZSddfX0="></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Issue Type</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5jcm1faXNzdWVfY2F0ZWdvcnkubGFiZWx9fQ=="></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Issue category</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5jcm1faXNzdWVfc3ViX2NhdGVnb3J5LmxhYmVsfX0="></span></span>
            </div>
            <div class="case-info__item flex items-center">
              <span>Severity</span>
              <span><span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5wcmlvcml0eWNvZGUubGFiZWx9fQ=="></span></span>
            </div>
          </div>
          <div class="case-info__block flex flex-col gap-2 p-4 rounded" data-info="cc-recipients">
            <div class="cc-recipients flex justify-between">
              <h5 class="fs-325 ff-open-sans-600 tracking">CC Recipients</h5>
              <button class="cc-recipients__button btn rounded-full transition-colors" data-action="edit" aria-hidden="false">
                <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
                  <path d="M2.04163 9.59992L1.16663 12.8333L4.39996 11.9583L11.4166 4.94159L9.05829 2.58325L2.04163 9.59992ZM3.84996 11.4083L1.99996 11.9999L2.59996 10.1416L3.84996 11.4083Z" fill="#939598" />
                  <path d="M10.2416 1.39997L9.64996 1.99997L12 4.34997L12.5916 3.7583C12.7416 3.60747 12.8341 3.39997 12.8341 3.1708C12.8341 2.94164 12.7416 2.73414 12.5916 2.5833L11.4166 1.39997C11.2658 1.24997 11.0583 1.15747 10.8291 1.15747C10.6 1.15747 10.3925 1.24997 10.2416 1.39997Z" fill="#939598" />
                </svg>
              </button>
              <button class="cc-recipients__button btn primary fs-200 ff-inter tracking" data-action="save" aria-hidden="true">Save</button>
            </div>
            <ul class="case-info__list flex flex-col gap-2 ff-open-sans tracking">
               
            </ul>
          </div>
        </section>
      </div>

      <!-- File attachment -->
      <div id="tab-content__file-attachment" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__file-attachment">
        <div class="attachment-item flex items-center gap-8 ff-open-sans rounded">
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Name</div>
            <div class="text-gray-900 tracking">920814531C64CFE6A7B13ACC9540zip</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Size(MB)</div>
            <div class="text-gray-900 tracking">5</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">Upload</div>
            <div class="text-gray-900 tracking">2024/02/18</div>
          </div>
          <div class="flex flex-col gap-2">
            <a href="https://neuron-stg.trendmicro.com/G2multidivision/downloadFile?fileType=archive&sha1=46a9df8e3f79533060bdfe2eda90acedc97bf13c&fileName=TestSample-Malicious%281%29+%281%29.zip" target="_blank" class="btn outline-white fs-200 ff-inter transition-colors">Download</a>
          </div>
        </div>
        <div class="attachment-item flex items-center gap-8 ff-open-sans rounded">
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Name</div>
            <div class="text-gray-900 tracking">920814531C64CFE6A7B13ACC9540zip</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Size(MB)</div>
            <div class="text-gray-900 tracking">5</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">Upload</div>
            <div class="text-gray-900 tracking">2024/02/18</div>
          </div>
          <div class="flex flex-col gap-2">
            <a class="btn outline-white fs-200 ff-inter transition-colors disabled">Download</a>
          </div>
        </div>
        <div class="attachment-item flex items-center gap-8 ff-open-sans rounded">
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Name</div>
            <div class="text-gray-900 tracking">920814531C64CFE6A7B13ACC9540zip</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Size(MB)</div>
            <div class="text-gray-900 tracking">5</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">Upload</div>
            <div class="text-gray-900 tracking">2024/02/18</div>
          </div>
          <div class="flex flex-col gap-2">
            <a href="#" target="_blank" class="btn outline-white fs-200 ff-inter transition-colors">Download</a>
          </div>
        </div>
        <div class="attachment-item flex items-center gap-8 ff-open-sans rounded">
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Name</div>
            <div class="text-gray-900 tracking">920814531C64CFE6A7B13ACC9540zip</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Size(MB)</div>
            <div class="text-gray-900 tracking">5</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">Upload</div>
            <div class="text-gray-900 tracking">2024/02/18</div>
          </div>
          <div class="flex flex-col gap-2">
            <a href="#" target="_blank" class="btn outline-white fs-200 ff-inter transition-colors">Download</a>
          </div>
        </div>
        <div class="attachment-item flex items-center gap-8 ff-open-sans rounded">
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Name</div>
            <div class="text-gray-900 tracking">920814531C64CFE6A7B13ACC9540zip</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">File Size(MB)</div>
            <div class="text-gray-900 tracking">5</div>
          </div>
          <div class="flex flex-col gap-2">
            <div class="fs-200 text-gray-400">Upload</div>
            <div class="text-gray-900 tracking">2024/02/18</div>
          </div>
          <div class="flex flex-col gap-2">
            <a class="btn outline-white fs-200 ff-inter transition-colors disabled">Download</a>
          </div>
        </div>
      </div>

      <!-- URL text results -->
      <div id="tab-content__url-results" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__url-results">
        <div class="tablist flex items-center gap-3 fs-200 ff-open-sans" role="tablist" aria-label="URL text results - classification tabs">
          <div class="tab-item btn outline-white rounded checked-forward" data-results="all" role="tab" aria-selected="true">All</div>
          <div class="tab-item btn outline-white rounded" data-results="dangerous" role="tab" aria-selected="false">Dangerous</div>
          <div class="tab-item btn outline-white rounded" data-results="safe" role="tab" aria-selected="false">Safe</div>
          <div class="tab-item btn outline-white rounded" data-results="untested" role="tab" aria-selected="false">Untested</div>
          <div class="tab-item btn outline-white rounded" data-results="analyzing" role="tab" aria-selected="false">Analyzing</div>
          <div class="tab-item btn outline-white rounded" data-results="suspicious" role="tab" aria-selected="false">Suspicious</div>
          <div class="tab-item btn outline-white rounded" data-results="highly suspicious" role="tab" aria-selected="false">Highly Suspicious</div>
        </div>

        <section class="table-lists">
          <table class="bg-white fs-300 ff-open-sans tracking">
            <thead>
              <tr>
                <th style="width: 30%">URLs</th>
                <th style="width: 25%">Suggestion Rating & Classification</th>
                <th style="width: 25%">Updated Rating & Classification</th>
                <th style="width: 20%">Escalated</th>
              </tr>
            </thead>
            <tbody>
              <!-- Dynamically render case -->
              <tr class="list">
                <td>https://google.com</td>
                <td>
                  <div class="flex items-center gap-1">
                    <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <g id="check-circle-o" clip-path="url(#clip0_2630_922)">
                        <path id="Vector" d="M7 0.333496C3.33333 0.333496 0.333328 3.3335 0.333328 7.00016C0.333328 10.6668 3.33333 13.6668 7 13.6668C10.6667 13.6668 13.6667 10.6668 13.6667 7.00016C13.6667 3.3335 10.6667 0.333496 7 0.333496ZM9.5 4.50016L10.5 5.3335L6.16666 10.3335L3.16666 7.3335L4.08333 6.41683L6.08333 8.41683L9.5 4.50016Z" fill="#00D281" />
                      </g>
                      <defs>
                        <clipPath id="clip0_2630_922">
                          <rect width="13.3333" height="13.3333" fill="white" transform="translate(0.333328 0.333496)" />
                        </clipPath>
                      </defs>
                    </svg>
                    Safe
                  </div>
                  <span>Society & Lifestyle</span>
                </td>
                <td>
                  <div class="flex items-center gap-1">
                    <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <g id="icon / warning-circle">
                        <path id="Vector" d="M8 1.8335C4.31833 1.8335 1.33333 4.8185 1.33333 8.50016C1.33333 12.1818 4.31833 15.1668 8 15.1668C11.6817 15.1668 14.6667 12.1818 14.6667 8.50016C14.6667 4.8185 11.6817 1.8335 8 1.8335ZM8.83333 12.6668H7.16666V11.0002H8.83333V12.6668ZM8.83333 10.1668H7.16666V5.16683H8.83333V10.1668Z" fill="#FF3C23" />
                      </g>
                    </svg>
                    Dangerous
                  </div>
                  <span>Society & Lifestyle</span>
                </td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal" disabled>Escalate</button>
                  <button class="btn outline-red" data-action="show-status">Status(1)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                  <div class="status-message absolute bg-white rounded-6 justify-between flex items-center gap-2" aria-hidden="true" aria-label="Check escalation status">
                    <div class="flex flex-col gap-2">
                      <div>Escalation Type</div>
                      <div>Further Analysis</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Date</div>
                      <div>2023/07/31</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Status</div>
                      <div>Completed</div>
                    </div>
                  </div>
                </td>
              </tr>
              <tr class="list">
                <td>https://trendmicro.com</td>
                <td>
                  <div class="flex items-center gap-1">
                    <svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <g id="warning-triangle" clip-path="url(#clip0_2630_2295)">
                        <path id="Vector" d="M13.55 12.0752L7.71666 2.07516C7.57 1.82516 7.30166 1.66016 6.99583 1.66016C6.69 1.66016 6.42166 1.82516 6.2775 2.07182L6.275 2.07599L0.441664 12.076C0.36833 12.1977 0.324997 12.3443 0.324997 12.501C0.324997 12.961 0.69833 13.3343 1.15833 13.3343C1.16083 13.3343 1.16416 13.3343 1.16666 13.3343H12.8325C13.2925 13.3343 13.6658 12.961 13.6658 12.501C13.6658 12.3443 13.6225 12.1977 13.5475 12.0718L13.55 12.076V12.0752ZM7.83333 11.6668H6.16666V10.0002H7.83333V11.6668ZM7.83333 9.16682H6.16666V5.00016H7.83333V9.16682Z" fill="#FFB42B" />
                      </g>
                      <defs>
                        <clipPath id="clip0_2630_2295">
                          <rect width="13.3333" height="13.3333" fill="white" transform="translate(0.333328 0.833496)" />
                        </clipPath>
                      </defs>
                    </svg>
                    Not specified
                  </div>
                  <span>Auction</span>
                </td>
                <td>
                  <div class="flex items-center gap-1">
                    <svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
                      <g id="icon / warning-circle">
                        <path id="Vector" d="M8 1.8335C4.31833 1.8335 1.33333 4.8185 1.33333 8.50016C1.33333 12.1818 4.31833 15.1668 8 15.1668C11.6817 15.1668 14.6667 12.1818 14.6667 8.50016C14.6667 4.8185 11.6817 1.8335 8 1.8335ZM8.83333 12.6668H7.16666V11.0002H8.83333V12.6668ZM8.83333 10.1668H7.16666V5.16683H8.83333V10.1668Z" fill="#FF3C23" />
                      </g>
                    </svg>
                    Dangerous
                  </div>
                  <span>Auction</span>
                </td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal">Escalate</button>
                  <button class="btn outline-red" data-action="show-status" disabled>Status(0)</button>
                </td>
              </tr>
            </tbody>
          </table>
        </section>

        <section class="case-detail__pagination">
          <!-- Dynamically render pagination -->
        </section>
      </div>

      <!-- Virus results -->
      <div id="tab-content__virus-file" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__virus-file">
        <div class="tablist flex items-center gap-3 fs-200 ff-open-sans" role="tablist" aria-label="Virus file results - result tabs">
          <div class="tab-item btn outline-white rounded checked-forward" data-results="all" role="tab" aria-selected="true">All</div>
          <div class="tab-item btn outline-white rounded" data-results="malicious" role="tab" aria-selected="false">Malicious</div>
          <div class="tab-item btn outline-white rounded" data-results="normal" role="tab" aria-selected="false">Normal</div>
          <div class="tab-item btn outline-white rounded" data-results="analyzing" role="tab" aria-selected="false">Analyzing</div>
          <div class="tab-item btn outline-white rounded" data-results="undecided" role="tab" aria-selected="false">Undecided</div>
          <div class="tab-item btn outline-white rounded" data-results="unknown password" role="tab" aria-selected="false">Unknown password</div>
        </div>

        <section class="table-lists">
          <table class="bg-white fs-300 ff-open-sans tracking">
            <thead>
              <tr>
                <th style="width: 15%;">Results</th>
                <th style="width: 50%;">File name(Sha-1)</th>
                <th style="width: 10%;">Detection Name</th>
                <th style="width: 20%;" class="arrow-backward">Smart Scan</th>
                <th style="width: 10%;">Escalated</th>
              </tr>
            </thead>
            <tbody>
              <!-- Dynamically render case -->
              <tr class="list">
                <td>Normal</td>
                <td>aaa.txt b480c074d6b75947c02681f31c90c668c46bf6b8</td>
                <td>Unknown</td>
                <td>None</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal" disabled>Escalate</button>
                  <button class="btn outline-red" data-action="show-status">Status(1)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                  <div class="status-message absolute bg-white rounded-6 justify-between flex items-center gap-2" aria-hidden="true" aria-label="Check escalation status">
                    <div class="flex flex-col gap-2">
                      <div>Escalation Type</div>
                      <div>Further Analysis</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Date</div>
                      <div>2023/07/31</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Status</div>
                      <div>Completed</div>
                    </div>
                  </div>
                </td>
              </tr>
              <tr class="list">
                <td>Malicious</td>
                <td>aaa.txt b480c074d6b75947c02681f31c90c668c46bf6b8</td>
                <td>Unknown</td>
                <td>Smart Scan Pattern(17.629.00)</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal" disabled>Escalate</button>
                  <button class="btn outline-red" data-action="show-status" disabled>Status(0)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                </td>
              </tr>
              <tr class="list">
                <td>Analyzing</td>
                <td>aaa.txt b480c074d6b75947c02681f31c90c668c46bf6b8</td>
                <td>Unknown</td>
                <td>Smart Scan Pattern(17.629.00)</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal" disabled>Escalate</button>
                  <button class="btn outline-red" data-action="show-status" disabled>Status(0)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                </td>
              </tr>
              <tr class="list">
                <td>Undecided</td>
                <td>aaa.txt b480c074d6b75947c02681f31c90c668c46bf6b8</td>
                <td>Unknown</td>
                <td>Smart Scan Pattern(17.629.00)</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal">Escalate</button>
                  <button class="btn outline-red" data-action="show-status" disabled>Status(0)</button>
                </td>
              </tr>
              <tr class="list">
                <td>Unknown password</td>
                <td>aaa.txt b480c074d6b75947c02681f31c90c668c46bf6b8</td>
                <td>Unknown</td>
                <td>Smart Scan Pattern(17.629.00)</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal">Escalate</button>
                  <button class="btn outline-red" data-action="show-status">Status(1)</button>
                  <div class="status-message absolute bg-white rounded-6 justify-between flex items-center gap-2" aria-hidden="true" aria-label="Check escalation status">
                    <div class="flex flex-col gap-2">
                      <div>Escalation Type</div>
                      <div>Further Analysis</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Date</div>
                      <div>2023/07/31</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Status</div>
                      <div>Completed</div>
                    </div>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </section>

        <section class="case-detail__pagination">
          <!-- Dynamically render pagination -->
        </section>
      </div>

      <!-- Email results -->
      <div id="tab-content__email-results" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__email-results">
        <div class="tablist flex items-center gap-3 fs-200 ff-open-sans" role="tablist" aria-label="Email results - result tabs">
          <div class="tab-item btn outline-white rounded checked-forward" data-results="all" role="tab" aria-selected="true">All</div>
          <div class="tab-item btn outline-white rounded" data-results="spam" role="tab" aria-selected="false">Spam</div>
          <div class="tab-item btn outline-white rounded" data-results="invalid" role="tab" aria-selected="false">Invalid</div>
          <div class="tab-item btn outline-white rounded" data-results="normal" role="tab" aria-selected="false">Normal</div>
          <div class="tab-item btn outline-white rounded" data-results="analyzing" role="tab" aria-selected="false">Analyzing</div>
          <div class="tab-item btn outline-white rounded" data-results="simulation" role="tab" aria-selected="false">Simulation</div>
          <div class="tab-item btn outline-white rounded" data-results="mml" role="tab" aria-selected="false">MML</div>
          <div class="tab-item btn outline-white rounded" data-results="undecided" role="tab" aria-selected="false">Undecided</div>
        </div>

        <section class="table-lists">
          <table class="bg-white fs-300 ff-open-sans tracking">
            <thead>
              <tr>
                <th style="width: 60%;">Mail file name</th>
                <th style="width: 20%;">Scan result</th>
                <th style="width: 20%;">Escalated</th>
              </tr>
            </thead>
            <tbody>
              <!-- Dynamically render case -->
              <tr class="list">
                <td>Untitled.eml</td>
                <td>Spam</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal" disabled>Escalate</button>
                  <button class="btn outline-red" data-action="show-status">Status(1)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                  <div class="status-message absolute bg-white rounded-6 justify-between flex items-center gap-2" aria-hidden="true" aria-label="Check escalation status">
                    <div class="flex flex-col gap-2">
                      <div>Escalation Type</div>
                      <div>Further Analysis</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Date</div>
                      <div>2023/07/31</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Status</div>
                      <div>Completed</div>
                    </div>
                  </div>
                </td>
              </tr>
              <tr class="list">
                <td>Mail_name.msg</td>
                <td>Invalid</td>
                <td class="flex items-center gap-2 relative fs-200 ff-inter">
                  <button class="btn outline-white" data-action="open-escalate-modal">Escalate</button>
                  <button class="btn outline-red" data-action="show-status">Status(1)</button>
                  <div class="escalation-disabled-message ff-inter-light">This case has exceeded the 90-days escalation period, please submit a new case.</div>
                  <div class="status-message absolute bg-white rounded-6 justify-between flex items-center gap-2" aria-hidden="true" aria-label="Check escalation status">
                    <div class="flex flex-col gap-2">
                      <div>Escalation Type</div>
                      <div>Further Analysis</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Date</div>
                      <div>2023/07/31</div>
                    </div>
                    <div class="flex flex-col gap-2">
                      <div>Status</div>
                      <div>Completed</div>
                    </div>
                  </div>
                </td>
              </tr>
            </tbody>
          </table>
        </section>

        <section class="case-detail__pagination">
          <!-- Dynamically render pagination -->
        </section>
      </div>

      <!-- Unknown Password -->
      <div id="tab-content__unknown-password" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__unknown-password">
        <section class="table-lists">
          <table class="bg-white fs-300 ff-open-sans tracking">
            <thead>
              <tr>
                <th style="width: 70%;">File Name(Sha-1)</th>
                <th style="width: 30%;">UnZip File</th>
              </tr>
            </thead>
            <tbody>
              <!-- Dynamically render case -->
              <tr class="list">
                <td>unknown.zip</td>
                <td>
                  <button class="btn outline-white fs-200" data-action="open-password-modal" data-file-name="unknown.zip" data-sha="df51e37c269aa94d38f93e537bf6e2020b21406c" disabled>Provide Password</button>
                </td>
              </tr>
              <tr class="list">
                <td>307urlList.txt</td>
                <td>
                  <button class="btn outline-white fs-200" data-action="open-password-modal" data-file-name="307urlList.txt" data-sha="njfdnvkfjdvndflvnnieueio31">Provide Password</button>
                </td>
              </tr>
            </tbody>
          </table>
        </section>

        <section class="case-detail__pagination">
          <!-- Dynamically render pagination -->
        </section>
      </div>

      <!-- Attk logs -->
      <div id="tab-content__attk-logs" class="tab-content flex flex-col gap-4" aria-hidden="true" aria-labelledby="tab-title__attk-logs">
        <div class="attk-logs__host-name"></div>
        <div class="attk-logs__step flex flex-col gap-2" data-step="0" aria-hidden="true"></div>
        <div class="attk-logs__step flex flex-col gap-2" data-step="1" aria-hidden="true">
          <h5 class="fs-300 fw-400 ff-open-sans tracking"><span class="text-red-600">*</span>Step 1: Select the files to be collected by the ATTK package tool</h5>
          <section class="table-lists">
            <table class="bg-white fs-300 ff-open-sans tracking">
              <thead>
                <tr>
                  <th style="width: 10%;" aria-hidden="true"></th>
                  <th style="width: 15%;">Collected</th>
                  <th style="width: 65%;">File name</th>
                </tr>
              </thead>
              <tbody>
                <tr class="list">
                  <td class="base-checkbox" aria-hidden="true">
                    <input type="checkbox" class="relative grid place-items-center square-shape rounded" name="attk-path" value="C:\Program Files\WindowsApps\Microsoft.MSPaint_6.2203.1037.0_x64__8wekyb3d8bbwe\PaintStudio.View.exe" />
                  </td>
                  <td>No</td>
                  <td>C:\Program Files\WindowsApps\Microsoft.MSPaint_6.2203.1037.0_x64__8wekyb3d8bbwe\PaintStudio.View.exe</td>
                </tr>
                <tr class="list">
                  <td class="base-checkbox" aria-hidden="true">
                    <input type="checkbox" class="relative grid place-items-center square-shape rounded" name="attk-path" value="C:\Windows\System32\panv2credprov.dll" />
                  </td>
                  <td>No</td>
                  <td>C:\Windows\System32\panv2credprov.dll</td>
                </tr>
                <tr class="list">
                  <td class="base-checkbox" aria-hidden="true">
                    <input type="checkbox" class="relative grid place-items-center square-shape rounded" name="attk-path" value="\\?\C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\resources\app.asar.unpacked\node_modules\keytar4\build\Release\keytar.node" />
                  </td>
                  <td>No</td>
                  <td>\\?\C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\resources\app.asar.unpacked\node_modules\keytar4\build\Release\keytar.node</td>
                </tr>
                <tr class="list">
                  <td class="base-checkbox" aria-hidden="true">
                    <input type="checkbox" class="relative grid place-items-center square-shape rounded" name="attk-path" value="C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\ffmpeg.dll" />
                  </td>
                  <td>No</td>
                  <td>C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\ffmpeg.dll</td>
                </tr>
                <tr class="list">
                  <td class="base-checkbox" aria-hidden="true">
                    <input type="checkbox" class="relative grid place-items-center square-shape rounded" name="attk-path" value="\\?\C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\resources\app.asar.unpacked\node_modules\keyboard-layout\build\Release\keyboard-layout-manager.node" />
                  </td>
                  <td>No</td>
                  <td>\\?\C:\Users\IEC111379\AppData\Local\Microsoft\Teams\current\resources\app.asar.unpacked\node_modules\keyboard-layout\build\Release\keyboard-layout-manager.node</td>
                </tr>
              </tbody>
            </table>
          </section>
        </div>
        <div class="attk-logs__step flex flex-col gap-2" data-step="2" aria-hidden="true">
          <h5 class="fs-300 fw-400 ff-open-sans tracking"><span class="text-red-600">*</span>Step 2: Please download selected file</h5>
          <button class="attk-generate-package__button btn outline-red fs-200 ff-inter tracking transition-colors" disabled>
            <svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
              <g id="download" clip-path="url(#clip0_2977_5147)">
                <path id="Vector" d="M11.25 7.5V10.5C11.25 10.875 10.875 11.25 10.5 11.25H1.5C1.125 11.25 0.75 10.875 0.75 10.5V7.5H1.5V10.5H10.5V7.5H11.25ZM6 8.25L9.75 4.5H7.5V0.75H4.5V4.5H2.25L6 8.25Z" fill="#D71920" />
              </g>
              <defs>
                <clipPath id="clip0_2977_5147">
                  <rect width="12" height="12" fill="white" />
                </clipPath>
              </defs>
            </svg>
            Generate Custom ATTK Package
          </button>
        </div>
        <div class="attk-logs__step" data-step="3" aria-hidden="true"></div>
        <div class="attk-logs__step flex flex-col gap-4" data-step="4" aria-hidden="true">
          <p class="fs-300 ff-open-sans tracking">This will prompt you to download the Custom ATTK package. After downloading the file, run the tool on the infected or possibly-infected machine. It will collect the necessary information to help us in the analysis of the problem. Once the log collection is done, the package will generate a zip file containing the collected logs.</p>
          <textarea name="attk-logs__details" id="attk-logs__details" class="bg-neutral-100 fs-300 ff-open-sans rounded tracking" placeholder="Please enter the details of your request" cols="30" rows="3"></textarea>
          <button class="btn outline-white self-end fs-200 ff-inter" data-action="submit">Submit</button>
        </div>
      </div>
    </div>
  </section>

  <!-- Backdrop -->
  <div class="case-detail__backdrop backdrop"></div>

  <!-- Escalate modal for URL results -->
  <dialog id="escalation-modal__url-results" class="escalation-modal p-4">
    <h5 class="ff-inter fs-400 fw-400">Escalation</h5>
    <div class="modal-content flex flex-col gap-4"></div>
    <button class="add-category btn outline-white fs-200" disabled>Add selected category</button>
    <div class="flex items-center justify-end gap-4 fs-200 ff-inter text-gray-400 transition-colors">
      <button class="btn" data-action="close-modal">Cancel</button>
      <button class="btn outline-white" data-action="submit-escalation" disabled>Confirm and submit</button>
    </div>
  </dialog>

  <!-- Escalate modal for Virus results -->
  <dialog id="escalation-modal__virus-file" class="escalation-modal p-4">
    <h5 class="ff-inter fs-400 fw-400">Escalation</h5>
    <div class="modal-content flex flex-col gap-6"></div>
    <div class="flex items-center justify-end gap-4 fs-200 ff-inter text-gray-400 transition-colors">
      <button class="btn" data-action="close-modal">Cancel</button>
      <button class="btn outline-white" data-action="submit-escalation" disabled>Submit</button>
    </div>
  </dialog>

  <!-- Escalate modal for email results -->
  <dialog id="escalation-modal__email-results" class="escalation-modal p-4">
    <h5 class="ff-inter fs-400 fw-400">Escalation</h5>
    <div class="modal-content flex flex-col gap-6"></div>
    <div class="flex items-center justify-end gap-4 fs-200 ff-inter text-gray-400 transition-colors">
      <button class="btn" data-action="close-modal">Cancel</button>
      <button class="btn outline-white" data-action="submit-escalation" disabled>Submit</button>
    </div>
  </dialog>

  <!-- Modal for unknown password -->
  <dialog id="escalation-modal__unknown-password" class="escalation-modal flex flex-col gap-4 p-4">
    <h5 class="ff-inter fs-400 fw-400">Password request</h5>
    <p class="ff-inter-light">Please enter the file password and the system will uncompress the file to continue analyzing. The processing time for this depends on the file size. Once the process has stared, please do not close the window.</p>
    <div class="modal-content flex flex-col gap-2">
      <div class="base-input relative">
        <label for="unknown-password__file-name" class="block fs-325 ff-open-sans-600 tracking">File name</label>
        <input id="unknown-password__file-name" class="relative text-gray-450 ff-open-sans fs-300 bg-neutral-250 rounded tracking transition-shadows" name="unknown-password__file-name" value="" type="text" readonly />
      </div>
      <div class="base-input relative">
        <label for="unknown-password__sha-1" class="block fs-325 ff-open-sans-600 tracking">Sha-1</label>
        <input id="unknown-password__sha-1" class="relative text-gray-450 ff-open-sans fs-300 bg-neutral-250 rounded tracking transition-shadows" name="unknown-password__sha-1" value="" type="text" readonly />
      </div>
      <div class="base-input relative">
        <label for="unknown-password__password" class="block fs-325 ff-open-sans-600 tracking">Password</label>
        <input id="unknown-password__password" class="relative text-gray-400 ff-open-sans fs-300 bg-white rounded tracking transition-shadows" name="unknown-password__password" value="" type="password" />
      </div>
    </div>
    <div class="flex items-center justify-end gap-4 fs-200 ff-inter text-gray-400 transition-colors">
      <button class="btn" data-action="close-modal">Cancel</button>
      <button class="btn outline-white" data-action="submit-escalation" disabled>Submit</button>
    </div>
  </dialog>

  <!-- Modal for attk logs -->
  <dialog id="escalation-modal__attk-logs" class="escalation-modal flex flex-col gap-4 p-4">
    <h5 class="ff-inter fs-400 fw-400">Result</h5>
    <p class="fs-300 ff-inter-light">Submit successfully</p>
    <button class="btn outline-white fs-200 ff-inter" data-action="close-modal">OK</button>
  </dialog>
</div>

<script type="module">
  import {
    getElement,
    toggleHidden,
    removeVisibility,
    getPageResult,
  } from '/helper.js';
  import {
    BaseAttachment,
    BaseEmail,
    BasePagination,
    BaseInput,
    CheckboxInput,
    Dropdown,
    RadioInput,
    MessageBox
  } from '/classZ.js';
  import { URLReclassificationCategory } from '/static_data.js';

  const dropdownStates = {
    newClass: {
      id: 'select-new-class',
      label: 'Please select a new class',
      value: '',
      placeholder: 'Please select',
      require: true,
      dropdownList: []
    },
    newCategory: {
      id: 'add-new-category',
      label: 'Add a new category',
      value: '',
      placeholder: 'Please select',
      require: true,
      dropdownList: []
    },
    hostName: {
      id: 'host-name',
      label: 'Host name',
      value: '',
      placeholder: 'Please select',
      require: false,
      dropdownList: [
        {
          label: 'ITO-111379-1',
          value: 'ITO-111379-1'
        }
      ]
    }
  }

  const attachmentState = {
    productIssue: {
      id: 'productIssue',
      title: "Attachment",
      additionalInfo:
        'For fast processing, please capture logs for your product by <a href="https://success.trendmicro.com/user-guide-ie-config" target="_blank">these steps</a> Or, directly access the <a href="https://downloadcenter.trendmicro.com/index.php?regs=NABU&clk=latest&clkval=4261&lang_loc=1" target="_blank">Diagnostic Tool</a>',
      description: '<span class="text-black">Add </span> file or drag files here',
      uploadFiles: []
    },
    virusOrEmail: {
      id: 'virusOrEmail',
      title: "Virus File or Email File",
      description: '<span class="text-black">Add </span> file or drag files here <br> File Size Limit: 250MB',
      accept: ".zip,.rar,.7z",
      maxSize: 262144000,
      acceptableFileType: [
        "application/zip",
        "application/x-rar",
        "application/x-7z-compressed",
        "application/x-zip-compressed",
        "application/x-rar-compressed",
        "application/octet-stream",
        "application/vnd.rar"
      ],
      typeError: 'Failed to upload. It accepts only ZIP or RAR files',
      sizeError: 'Failed to upload. The file size must not exceed 250MB.',
      require: true,
      uploadFiles: []
    },
    supportingFile: {
      id: 'supportingFile',
      title: "Supporting File",
      description: '<span class="text-black">Add </span> file or drag files here <br> File Size Limit: 250MB',
      accept: ".zip,.rar,.7z",
      maxSize: 262144000,
      acceptableFileType: [
        "application/zip",
        "application/x-rar",
        "application/x-7z-compressed",
        "application/x-zip-compressed",
        "application/x-rar-compressed",
        "application/octet-stream",
        "application/vnd.rar"
      ],
      typeError: 'Failed to upload. It accepts only ZIP or RAR files',
      sizeError: 'Failed to upload. The file size must not exceed 250MB.',
      require: true,
      uploadFiles: []
    },
    attkLogsAttachment: {
      id: 'attkLogsAttachment',
      title: 'Step 3: Upload the zip file from your local drive',
      description: '<span class="text-black">Add </span> file or drag files here',
      accept: ".zip",
      maxSize: 2621440,
      maxQuantity: 1,
      acceptableFileType: [
        "application/zip",
        "application/x-zip-compressed",
        "multipart/x-zip"
      ],
      require: true,
      uploadFiles: []
    },
  }

  const CCEmailState = {
    caseDetail: {
      id: 'cc-email',
      name: 'cc-email',
      placeholder: '-',
      emailList: [
        
      ],
    },
  URLResults: {
    id: 'url-results-ccemail',
      name: 'url-results-ccemail',
        placeholder: '-',
          readonly: true,
            emailList: [
              'Business / Economy',
              'Adult / Mature Content'
            ],
    }
  }

  const paginationState = {
    items: [],
    curPage: 1,
    itemsPerPage: 10,
    filteredItems: []
  }

  const checkboxStates = {
    virusFile: {
      name: 'virus-file',
      title: 'Please select items for escalation',
      require: false,
      checkboxItems: [
        {
          id: 'false-positive',
          value: 'false positive',
          label: 'False Positive',
          checked: false
        },
        {
          id: 'clean-failed-checkbox',
          value: 'clea failed',
          label: 'Clean Failed',
          checked: false
        },
        {
          id: 'further-analysis',
          value: 'further analysis',
          label: 'Further Analysis',
          checked: false
        },
        {
          id: 'generic-to-specific',
          value: 'generic to specific',
          label: 'Generic to Specific',
          checked: false,
          disabled: true
        },
        {
          id: 'pattern-migration',
          value: 'pattern migration',
          label: 'Pattern Migration',
          checked: false
        },
        {
          id: 'virus-report-l1',
          value: 'virus report l1',
          label: 'Virus Report L1',
          checked: false
        },
        {
          id: 'virus-report-l2',
          value: 'virus report l2',
          label: 'Virus Report L2',
          checked: false
        },
      ]
    },
    emailResults: {
      name: 'email-results',
      title: 'Please select an escalation type',
      require: false,
      checkboxItems: [
        {
          id: 'spam-false-positive',
          value: 'spam false positive',
          label: 'Spam False Positive',
          checked: false
        },
        {
          id: 'email-false-positive',
          value: 'email false positive',
          label: 'Email False Positive',
          checked: false
        }
      ]
    },
  }

  const radioState = {
    escalationType: {
      name: 'escalationType',
      title: 'Please select an escalation type',
      value: '',
      require: true,
      radioItems: [
        {
          id: 'clean-failed',
          value: 'clean failed',
          label: 'Clean Failed',
          disabled: true
        },
        {
          id: 'reclassify-url',
          value: 'reclassify url',
          label: 'Reclassify URL',
          checked: true
        },
        {
          id: 'url-false-negative',
          value: 'url false negative',
          label: 'URL False Negative',
        }
      ]
    },
    attkLogsRadio: {
      name: 'attkLogsRadio',
      title: '',
      value: '',
      require: false,
      radioItems: [
        {
          id: 'request-attk-logs-analysis',
          value: 'request attk logs analysis',
          label: 'Request ATTK Log Analysis1',
        },
        {
          id: 'collect-more-files',
          value: 'collect more files',
          label: 'Collect More Files1',
        },
      ]
    }
  }

  const inputStates = {
    virusFile: {
      id: 'virus-file-input',
      name: 'virus-file-input',
      label: 'Please specify the detection name',
      type: 'textarea',
      placeholder: 'The detection name is stored in either the Threat field or Violation field of the product console. For more information, click on Office scan or Worry-free.',
      value: '',
    },
    emailResults: {
      id: 'email-results-input',
      name: 'email-results-input',
      label: 'Please specify the detection name',
      type: 'textarea',
      placeholder: '-',
      value: '',
    }
  }

  const caseDetailBackdrop = getElement('.case-detail__backdrop.backdrop');

  let currentTab = 'case-detail';
  let isMessagesExpanded = false;
  let isShowAllMessages = false;
  let URLCategoryData;
  let defaultURLCategory;
  let paginationInstance;
  let URLCategoryListInstance;
  let URLCategoryDropdownInstance;
  let productAttachmentInstance;
  let emailOrVirusAttachmentInstance;
  let supportingFileAttachmentInstance;
  let attkLogsAttachmentInstance;
  let fileArr = [];
  let collectedFiles = [];
  let uuid = '';
  let verifykey = '';

  // Case Detail
  const handleClickonCaseDetailTab = ({ target }) => {
    if (!target.classList.contains('tab-item') || target.getAttribute('aria-selected') === 'true') return;

    removeVisibility('.case-detail__tabs .tab-item', 'aria-selected');
    removeVisibility('.tab-content', 'aria-hidden');

    const controlledId = target.getAttribute('aria-controls');
    const controlledElement = getElement(`#${controlledId}`);

    controlledElement?.setAttribute('aria-hidden', false);
    target.setAttribute('aria-selected', true);
    currentTab = target.dataset.tab;
  }

  const neuronTimeStamp = () => {
    var localTime = new Date();
    var localOffset = localTime.getTimezoneOffset();
    // Convert local time to GMT by subtracting the offset
    var gmtTime = new Date(localTime.getTime() + (localOffset * 60 * 1000));
    // Format GMT time
    var gmtFormatted = gmtTime.toISOString().slice(0, 23) + gmtTime.getUTCMilliseconds().toString().padStart(4, '0') + "Z";

    return gmtFormatted;
  }

  const getNeuronAuthentication = () => {
    let TS = neuronTimeStamp();
    let neuronHashToken = 'PPHG_ISqRXEzUC;{0}nIv21uB;PQ4Cg=d';
    let neuronHashTokenTS = neuronHashToken.replace('{0}', TS);
    let md5Key = CryptoJS.MD5(neuronHashTokenTS).toString().replace('-', '');
    var encodedmd5 = CryptoJS.enc.Utf8.parse(md5Key);
    let key = CryptoJS.enc.Utf8.parse('b~r2TzAXE3sVcC~,');
    let iv = CryptoJS.enc.Utf8.parse('b~r2TzAXE3sVcC~,');
    var Token = CryptoJS.AES.encrypt(encodedmd5, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })
    var encryptedHexStr = CryptoJS.enc.Hex.parse(Token.ciphertext.toString());
    var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);
    let arr = [];
    arr[0] = TS;
    arr[1] = '6A4BF237-2C38-45E1-B539-85F996EACDB8';
    arr[2] = encryptedBase64Str;
    return arr;
  }

  const handleGetProductFile = (file) => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        const curFile = file.file;

        const uploadFile = {
          id: file.id,
          name: curFile.name,
          formattedSize: file.formattedSize,
          file: file.file
        }
        getUploadURL(uploadFile);
        attachmentState?.productIssue.uploadFiles.push(uploadFile);
        productAttachmentInstance.renderFile(uploadFile);
        resolve();
      }, 1500)
    })
  }

  const getUploadURL = (file) => {
    console.log('file', file);
    console.log('uuid', uuid);
    console.log('verify_Key', verifykey);
    let TS = Math.floor(new Date().getTime() / 1000);
    let OrgId = '467ccc39-3c89-ee11-8174-00224828232d';
    let UserId = 'PBOXACCTEXTERNAL';
    let key = CryptoJS.enc.Utf8.parse('*_@^*EY_*Y_*^*_@~$_K*~$_KEY_E_@*');

    let iv_text = new Date().getTime() + '123';
    let iv = CryptoJS.enc.Utf8.parse(iv_text);
    let paramText =
      OrgId +
      ';' +
      UserId +
      ';;' +
      TS +
      ';' +
      uuid +
      ';' +
      'getUploadUrl';
    let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(paramText), key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    let queryInfo = '?Query=' + encodeURIComponent(encryptedBase64Str) + '&iv=' + iv_text + '&lang=en';
    console.log('queryInfo', queryInfo);

    let reader = new FileReader();
    reader.readAsDataURL(file.file);
    reader.onload = function () {
      let base64String = reader.result.replace('data:', '').replace(/^.+,/, '');
      console.log('getUploadURL base64String', base64String);
      let _url = "/_api/cloudflow/v1.0/trigger/5f2ac6ff-df1f-aa19-2531-250ca17d0b9e";
      let data = {};
      let payload = {};

      shell
        .ajaxSafePost({
          type: 'POST',
          url: _url,
          data: {
            eventData: JSON.stringify({
              'queryInfo': queryInfo,
              'verifyKey': verifykey,
              'fileName': file.name,
              'File Content': {
                contentBytes: base64String
              }
            })
          },
        })
        .done(function (response) {
          console.log('getUploadURL', JSON.parse(response).ret);

          return true;
        });
    }
  }

  const postResponse = () => {
    console.log('Post response');
      if (attachmentState["virusOrEmail"].uploadFiles.length > 0 || attachmentState["supportingFile"].uploadFiles.length > 0){
        SubmitCaseToNeuron();
      }else if (attachmentState["productIssue"].uploadFiles.length > 0){
        submitCaseToPowerBox();
      }
  }

  const handleGetVirusOrEmailFiles = (file) => {
    return new Promise((resolve, reject) => {
      const curFile = file.file;
      const arr = getNeuronAuthentication();
      console.log('arr', arr);
      let reader = new FileReader();
      reader.readAsDataURL(curFile);
      console.log('fileName', curFile.name);
      reader.onload = function () {
        let base64String = reader.result.replace('data:', '').replace(/^.+,/, '');
        console.log('fileContentbase64', base64String);
        let _url = "/_api/cloudflow/v1.0/trigger/31ac4bfe-263b-2684-ff14-200c3ca36d16";
        let data = {};
        let payload = {};

        shell
          .ajaxSafePost({
            type: 'POST',
            url: _url,
            data: {
              eventData: JSON.stringify({
                'token': arr[2],
                'timestamp': arr[0],
                'consumerId': arr[1],
                'fileName': curFile.name,
                'File Content': {
                  name: curFile.name,
                  contentBytes: base64String
                }
              })
            },
          })
          .done(function (response) {
            console.log('Upload file successful', JSON.parse(JSON.parse(response).ret).status);
            if (JSON.parse(JSON.parse(response).ret).status == 'success') {
              attachmentState["virusOrEmail"].uploadFiles.push({ ...JSON.parse(JSON.parse(response).ret).result[0], id: file.id });

              const uploadFile = {
                id: file.id,
                name: curFile.name,
                formattedSize: file.formattedSize
              }
              emailOrVirusAttachmentInstance.renderFile(uploadFile);
              resolve();
            } else {
              reject('Fail to upload. Please upload a file with the password "virus", "novirus", or "infected" set in the compressed file (ZIP or RAR).');
              console.log('Upload file failed', JSON.parse(JSON.parse(response).ret).message);
            }

            return true;
          })
          .fail(function (res) {
            console.log('Upload file failed', res);
            reject(res.statusText);
            return false;
          });
      }
    })
  }

  const handleGetSupportingFiles = (file) => {
    return new Promise((resolve, reject) => {
      const curFile = file.file;
      const arr = getNeuronAuthentication();
      let reader = new FileReader();

      reader.readAsDataURL(curFile);
      reader.onload = function () {
        let base64String = reader.result.replace('data:', '').replace(/^.+,/, '');
        console.log('fileContentbase64', base64String);
        let _url = "/_api/cloudflow/v1.0/trigger/31ac4bfe-263b-2684-ff14-200c3ca36d16";
        let data = {};
        let payload = {};

        shell
          .ajaxSafePost({
            type: 'POST',
            url: _url,
            data: {
              eventData: JSON.stringify({
                'token': arr[2],
                'timestamp': arr[0],
                'consumerId': arr[1],
                'fileName': curFile.name,
                'File Content': {
                  name: curFile.name,
                  contentBytes: base64String
                }
              })
            },
          })
          .done(function (response) {
            console.log('Upload file successful', JSON.parse(JSON.parse(response).ret).result[0]);
            attachmentState?.supportingFile.uploadFiles.push({ ...JSON.parse(JSON.parse(response).ret).result[0], id: file.id });

            const uploadFile = {
              id: file.id,
              name: curFile.name,
              formattedSize: file.formattedSize
            }
            supportingFileAttachmentInstance.renderFile(uploadFile);
            resolve();
            return true;
          })
          .fail(function (res) {
            console.log(res);
            reject(res.statusText);
            return false;
          });
      }
    })
  }

  const handleClickOnTabs = ({ target }) => {
    if (!target.classList.contains('tab-item') || target.getAttribute('aria-selected') === 'true') return;

    // Change selected state
    const selectedTab = target.closest('[role="tablist"]').querySelector('.tab-item[aria-selected="true"]');
    selectedTab?.setAttribute('aria-selected', false);
    selectedTab?.classList.remove('checked-forward');
    target.setAttribute('aria-selected', true);
    target.classList.add('checked-forward')

    // Filter table value
    const results = target.dataset.results;

    console.log(results)
  }

  const toggleAttachment = ({ target }) => toggleHidden(target);

  const toggleExpandAllMessages = ({ target }) => {
    isMessagesExpanded = !isMessagesExpanded;

    const messageItems = getElement('.message-item');
    messageItems?.forEach(item => item.setAttribute('aria-expanded', isMessagesExpanded))
    target.textContent = isMessagesExpanded ? 'Collapse all' : 'Expand all';
  }

  const toggleViewMessages = ({ target }) => {
    isShowAllMessages = !isShowAllMessages;
    target.textContent = isShowAllMessages ? 'Collapse' : 'View all messages'
  }

  const toggleExpandMessage = ({ target }) => {
    const messageItem = target.closest('.message-item');

    if (!messageItem) return;

    const isExpand = messageItem.getAttribute('aria-expanded') === 'true';
    messageItem.setAttribute('aria-expanded', !isExpand);
  }

  const closeCase = ({ target }) => {
    const status = target.value;

    if (status === 'closed') {
      const statusClosedElement = getElement('.case-status__closed');
      statusClosedElement.setAttribute('aria-hidden', false);
      target.remove();
    }
  }

  const saveCCRecipients = () => {

  }

  const handleClickonCCRecipients = (e) => {
    const ccButton = e.target.closest('.cc-recipients__button');

    if (!ccButton) return;

    const action = ccButton?.dataset.action;
    const ccRecipientsListElement = getElement('.case-info__list');
    const baseEmailElement = getElement('.case-info__block .base-input');

    if (action === 'edit') {
      const saveButton = getElement('.cc-recipients__button[data-action="save"]');
      saveButton?.setAttribute('aria-hidden', false);
    }

    if (action === 'save') {
      const editButton = getElement('.cc-recipients__button[data-action="edit"]');
      editButton?.setAttribute('aria-hidden', false);

      // Implement API call inside saveCCRecipients
      saveCCRecipients();

      const newEmailListMarkup = CCEmailState.caseDetail.emailList.map(email => `<li>${email}</li>`).join('');
      ccRecipientsListElement.innerHTML = '';
      ccRecipientsListElement.insertAdjacentHTML('beforeend', newEmailListMarkup);
      console.log(CCEmailState.caseDetail.emailList);
    }

    ccButton.setAttribute('aria-hidden', true);
    ccRecipientsListElement?.classList.toggle('hide');
    baseEmailElement?.classList.toggle('show');
  }

  const handleUpdateCCRecipients = (emails) => {
    console.log(emails);
    CCEmailState.caseDetail.emailList = emails;
  }

  const submitCaseToPowerBox = () => {
    let TS = Math.floor(new Date().getTime() / 1000);
    let OrgId = '467ccc39-3c89-ee11-8174-00224828232d';
    let UserId = 'PBOXACCTEXTERNAL';
    let key = CryptoJS.enc.Utf8.parse('*_@^*EY_*Y_*^*_@~$_K*~$_KEY_E_@*');

    let iv_text = new Date().getTime() + '123';
    let iv = CryptoJS.enc.Utf8.parse(iv_text);
    let paramText =
      OrgId +
      ';' +
      UserId +
      ';' +
      'Case_' + '<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5pbmNpZGVudGlkfX0="></span>'
      + ';' +
      TS +
      ';' +
      uuid +
      ';' +
      '' +
      ';' +
      'caseSubmit';
    console.log('submitCaseToPowerBox paramText', paramText);
    let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(paramText), key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    let queryInfo = '?Query=' + encodeURIComponent(encryptedBase64Str) + '&iv=' + iv_text + '&lang=en';
    console.log('queryInfo', queryInfo);

    let _url = "/_api/cloudflow/v1.0/trigger/c7462940-5058-f7d7-0d64-4ca4bc0bfd14";
    shell
      .ajaxSafePost({
        type: 'POST',
        url: _url,
        data: {
          eventData: JSON.stringify({
            'queryInfo': queryInfo,
            'verifyKey': verifykey
          })
        },
      })
      .done(function (response) {
        console.log('caseSubmit', JSON.parse(response).ret);

        return true;
      });

  }

  const SubmitCaseToNeuron = () => {
    let files = [];
    let noSuppFilesList = [];
    let urls = [];

    if (attachmentState["virusOrEmail"].uploadFiles.length > 0) {
      let fileLength = attachmentState["virusOrEmail"].uploadFiles.length;
      console.log("virusFiles", attachmentState["virusOrEmail"].uploadFiles);

      for (var i = 0; i < fileLength; i++) {
        var data = {};
        data["fileName"] = attachmentState["virusOrEmail"].uploadFiles[i].fileName;
        data["folderName"] = attachmentState["virusOrEmail"].uploadFiles[i].folderName;
        data["rootPassword"] = attachmentState["virusOrEmail"].uploadFiles[i].rootPassword;
        files.push(data);
      }
    }
    if (attachmentState["supportingFile"].uploadFiles.length > 0) {
      let suppportfileLength = attachmentState["supportingFile"].uploadFiles.length;
      console.log("supportingFile", attachmentState["supportingFile"].uploadFiles);

      for (var i = 0; i < suppportfileLength; i++) {
        var data = {};
        data["fileName"] = attachmentState["supportingFile"].uploadFiles[i].fileName;
        data["folderName"] = attachmentState["supportingFile"].uploadFiles[i].folderName;
        data["rootPassword"] = attachmentState["supportingFile"].uploadFiles[i].rootPassword;
        noSuppFilesList.push(data);
      }
    }

    const arr = getNeuronAuthentication();
    let NeuronCaseObject = {
      'srNumber': '',
      'files': files,
      'noSuppFilesList': noSuppFilesList,
      'token': arr[2],
      'timestamp': arr[0],
      'consumerId': arr[1],
      'sourceSystem': 'BSP',
      'caseId': '',
      'accountId': '',
      'potentialARR': '',
      'summary': ''
    };
    console.log('NeuronCaseObject', NeuronCaseObject);
    shell
      .ajaxSafePost({
        type: 'POST',
        url: "/_api/cloudflow/v1.0/trigger/954a9e4d-98ee-a91b-acaa-702092cf5138",
        data: {
          eventData: JSON.stringify({
            ...NeuronCaseObject
          })
        },
      })
      .done(function (response) {
        console.log('submit case to neuron', response);
        return true;
      })
      .fail(function (res) {
        console.log(res);
        return false;
      });
  }



  // Url Text, Virus file, email results
  const clickonEscalateButton = ({ target }) => {
    if (target.dataset?.action === 'open-escalate-modal' && !target.disabled)
      openEscalationModal()

    if (target.dataset?.action === 'show-status' && !target.disabled) {
      const statusMessageElement = target.closest('td').querySelector('.status-message');
      const isOpen = statusMessageElement?.getAttribute('aria-hidden') === 'true';
      statusMessageElement?.setAttribute('aria-hidden', !isOpen);
    }

    if (target.dataset?.action === 'open-password-modal') {
      const fileName = target.dataset.fileName;
      const sha1 = target.dataset.sha;

      const fileNameInput = getElement('#unknown-password__file-name');
      const sha1Input = getElement('#unknown-password__sha-1');

      fileNameInput.value = fileName;
      sha1Input.value = sha1;

      openEscalationModal()
    }
  }

  const openEscalationModal = () => {
    const escalationModal = getElement(`#escalation-modal__${currentTab}`);
    caseDetailBackdrop?.classList.add('active');
    escalationModal?.classList.add('active');
  }

  const closeEscalationModal = () => {
    const escalationModal = getElement(`#escalation-modal__${currentTab}`);
    caseDetailBackdrop?.classList.remove('active');
    escalationModal?.classList.remove('active')
  }

  const addURLCategory = () => {
    const newClass = dropdownStates.newClass.value;
    const newCategory = dropdownStates.newCategory.value.label;
    console.log(newClass);
    console.log(newCategory);

    const hasSameValue = CCEmailState.URLResults.emailList.includes(newCategory);

    if (hasSameValue) return;

    if (newClass && newCategory) {
      CCEmailState.URLResults.emailList.push(newCategory);
      console.log(CCEmailState.URLResults.emailList)
      URLCategoryListInstance.renderEmailList(CCEmailState.URLResults.emailList);
      const URLSubmitButton = getElement('#escalation-modal__url-results button[data-action="submit-escalation"]');
      URLSubmitButton.disabled = false;
    }
  }

  const submitEscalation = ({ target }) => {
    // const category = target.dataset.category;

    if (currentTab === 'email-results' || currentTab === 'virus-file') {
      const checkboxItems = Object.values(checkboxStates).find(state => state?.name === currentTab)?.checkboxItems;
      const atLeastOneChecked = checkboxItems.some(checkbox => checkbox.checked);

      if (!atLeastOneChecked) return;
    }

    if (currentTab === 'url-results') {
    }

    console.log(`Submit ${currentTab} escalation`)

    closeEscalationModal();
  }

  const submitAttkLogs = () => {
    const generatedAttkFile = attachmentState.attkLogsAttachment.uploadFiles[0];

    console.log('Submit ATTK logs successfully');
    openEscalationModal();
  }

  const generateAttkPackageFile = () => {
    console.log('Generate ATTK Package file');
  }

  const handleChangeOnCheckbox = (item) => {
    const checkboxItems = Object.values(checkboxStates).find(state => state?.name === item?.name)?.checkboxItems;
    const submitButton = getElement(`#escalation-modal__${item?.name} button[data-action="submit-escalation"]`);

    const matchedItem = checkboxItems.find(checkbox => checkbox.value === item.value);

    if (matchedItem)
      matchedItem.checked = !matchedItem.checked;

    const atLeastOneChecked = checkboxItems.some(checkbox => checkbox.checked);
    submitButton.disabled = !atLeastOneChecked;
  }

  const handleChangeOnRadio = ({ name, value, label }) => {
    console.log('in handleChangeOnRadio');
    const hasOwnProperty = Object.hasOwn(radioState, name);
    if (hasOwnProperty) {
      radioState[name].value = value;
      radioState[name].labelValue = label;
    }
    console.log(radioState[name])

    if (name === 'attkLogsRadio') {
      const step2 = getElement('.attk-logs__step[data-step="2"]');
      const step4 = getElement('.attk-logs__step[data-step="4"]');

      if (value === 'request attk logs analysis') {
        const step3 = getElement('.attk-logs__step[data-step="3"]');
        const hiddenFields = getElement('.attk-logs__step[data-step="1"] *[aria-hidden="false"]');

        console.log(hiddenFields);

        if (hiddenFields?.length)
          hiddenFields?.forEach(field => field.setAttribute('aria-hidden', true));

        step2.setAttribute('aria-hidden', true);
        step3.setAttribute('aria-hidden', true);
        step4.setAttribute('aria-hidden', false);
      }

      if (value === 'collect more files') {
        const hiddenFields = getElement('.attk-logs__step[data-step="1"] *[aria-hidden="true"]');

        hiddenFields?.forEach(field => field.setAttribute('aria-hidden', false));
        step2.setAttribute('aria-hidden', false);
        step4.setAttribute('aria-hidden', true);
      }
    }
  }

  const handleClickOnPagination = (page) => {
    paginationState.curPage = page;
    paginationState.items = getPageResult(paginationState);
    // renderCase();
  }

  const handleGetInputValue = (value) => {
    console.log(value);
  }

  const handleGetDropdownValue = (item) => {
    const { id, label, value } = item;

    console.log(item)

    const addCategoryButton = getElement('#escalation-modal__url-results .add-category');

    if (id === 'select-new-class') {
      dropdownStates.newClass.value = value;
      dropdownStates.newCategory.value = '';
      addCategoryButton.disabled = true;

      URLCategoryDropdownInstance?.clearValue();

      dropdownStates.newCategory.dropdownList = URLCategoryData[value];
      URLCategoryDropdownInstance?.setDropdownList(URLCategoryData[value]);
      console.log(dropdownStates.newClass.value);
    }

    if (id === 'add-new-category') {
      dropdownStates.newCategory.value = item;
      addCategoryButton.disabled = false;

      console.log(dropdownStates.newCategory.value)
    }

    if (id === 'host-name') {
      const attkLogsStep0 = getElement('.attk-logs__step[data-step="0"]');
      const attkLogsStep1 = getElement('.attk-logs__step[data-step="1"]');

      attkLogsStep0.setAttribute('aria-hidden', false)
      attkLogsStep1.setAttribute('aria-hidden', false)
    }
  }

  const handleUpdateURLCategory = (urlCategories) => {
    CCEmailState.URLResults.emailList = urlCategories;
    const isSame = urlCategories.every(category => defaultURLCategory.includes(category));

    if (isSame) {
      const submitURLButton = getElement('#escalation-modal__url-results button[data-action="submit-escalation"]');
      submitURLButton.disabled = true;
    }

    console.log(CCEmailState.URLResults.emailList)
  }

  const handleGetPassword = ({ target }) => {
    console.log(target.value)
    const submitBtn = getElement('#escalation-modal__unknown-password button[data-action="submit-escalation"]');
    submitBtn.disabled = target?.value === '';
  }

  const handleGetAttkLogFile = (file) => {
    return new Promise((resolve, reject) => {
      setTimeout(() => {
        const curFile = file.file;

        const uploadFile = {
          id: file.id,
          name: curFile.name,
          formattedSize: file.formattedSize
        }
        attachmentState.attkLogsAttachment.uploadFiles.push(uploadFile);
        attkLogsAttachmentInstance.renderFile(uploadFile);
        resolve();
      }, 1500)
    })
  }

  const handleClickonAttkLogsCollectedTool = (e) => {
    if (e.target.tagName !== 'INPUT' && e.target.type !== 'checkbox') return;

    const checked = e.target.checked;
    const value = e.target.value;

    if (checked)
      collectedFiles.push(value);

    if (!checked)
      collectedFiles = collectedFiles.filter(file => file !== value);

    const step3 = getElement('.attk-logs__step[data-step="3"]');
    const step4 = getElement('.attk-logs__step[data-step="4"]');
    const attkBtn = getElement('.attk-generate-package__button');
    const isShow = collectedFiles.length;

    step3.setAttribute('aria-hidden', !isShow);
    step4.setAttribute('aria-hidden', !isShow);
    attkBtn.disabled = !isShow;

    console.log(collectedFiles)
  }

  // const handleDeleteUploadFiles = ({ id, stateId }) => {
  //   if (attachmentState[stateId]) {
  //     attachmentState[stateId].uploadFiles = attachmentState[stateId].uploadFiles.filter(file => file.id !== id);
  //     console.log(attachmentState[stateId].uploadFiles);
  //   }
  // }

  const handleDeleteUploadFiles = ({ id, stateId }) => {
    let file = attachmentState[stateId].uploadFiles.filter(file => file.id == id);

    attachmentState[stateId].uploadFiles = attachmentState[stateId].uploadFiles.filter(file => file.id !== id);
    console.log(attachmentState[stateId].uploadFiles);
    console.log('stateId', stateId);

    if (stateId == 'productIssue') {
      let TS = Math.floor(new Date().getTime() / 1000);
      let OrgId = '467ccc39-3c89-ee11-8174-00224828232d';
      let UserId = 'PBOXACCTEXTERNAL';
      let key = CryptoJS.enc.Utf8.parse('*_@^*EY_*Y_*^*_@~$_K*~$_KEY_E_@*');

      let iv_text = new Date().getTime() + '123';
      let iv = CryptoJS.enc.Utf8.parse(iv_text);
      let paramText =
        OrgId +
        ';' +
        UserId +
        ';;' +
        TS +
        ';' +
        uuid +
        ';' +
        'delUploadFile';
      let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(paramText), key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
      });
      var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
      let queryInfo = '?Query=' + encodeURIComponent(encryptedBase64Str) + '&iv=' + iv_text + '&lang=en';
      console.log('queryInfo', queryInfo);

      let reader = new FileReader();
      reader.readAsDataURL(file[0].file);
      reader.onload = function () {
        let base64String = reader.result.replace('data:', '').replace(/^.+,/, '');
        let _url = "/_api/cloudflow/v1.0/trigger/cc7d7f97-9ecc-d2f3-cac4-23eb96b147f1";
        let data = {};
        let payload = {};

        shell
          .ajaxSafePost({
            type: 'POST',
            url: _url,
            data: {
              eventData: JSON.stringify({
                'queryInfo': queryInfo,
                'verifyKey': verifykey,
                'fileName': file.name
              })
            },
          })
          .done(function (response) {
            console.log('delUploadFile', JSON.parse(response).ret);

            return true;
          });
      }
    }
  }

  const getSampleType = () => {
    const arr = getNeuronAuthentication();
    let _url = "/_api/cloudflow/v1.0/trigger/05ec6c2c-b350-f173-4789-c349b1773bd1";
    shell
      .ajaxSafePost({
        type: 'POST',
        url: _url,
        data: {
          eventData: JSON.stringify({
            'token': arr[2],
            'timestamp': arr[0],
            'consumerid': arr[1],
            'ticketnumber': "07541965",
          })
        },
      })
      .done(function (response) {
        console.log('getSampleType successful', JSON.parse(JSON.parse(response).ret).result);
        //"{attkCount: 0, unknownPasswordArchiveCount: 0, fileCount: 1, emailCount: 0, urlCount: 0}"
        const arr = getNeuronAuthentication();
        let getSampleType = JSON.parse(JSON.parse(response).ret).result[0];
        console.log('attkCount', getSampleType.attkCount);
        if (getSampleType.attkCount >= 0) {
          let _url = "/_api/cloudflow/v1.0/trigger/58dce632-29ac-b847-e8ee-1ddc57ac7a85";
          shell
            .ajaxSafePost({
              type: 'POST',
              url: _url,
              data: {
                eventData: JSON.stringify({
                  'token': arr[2],
                  'timestamp': arr[0],
                  'consumerid': arr[1],
                  'ticketnumber': "07544720",
                })
              },
            })
            .done(function (response) {
              console.log('getATTKSample successful', JSON.parse(response).ret);
              return true;
            })
            .fail(function (res) {
              console.log('getATTKSample failed', JSON.parse(res).ret);
              return false;
            });
        }
        if (getSampleType.unknownPasswordArchiveCount >= 0) {
          let _url = "/_api/cloudflow/v1.0/trigger/5326e1d2-a668-7e8f-c606-8d37a3e61c5f";
          shell
            .ajaxSafePost({
              type: 'POST',
              url: _url,
              data: {
                eventData: JSON.stringify({
                  'token': arr[2],
                  'timestamp': arr[0],
                  'consumerid': arr[1],
                  'ticketnumber': "06623114",
                  "offset": 0,
                  "pageSize": 10,
                  "filter": ""
                })
              },
            })
            .done(function (response) {
              console.log('getunknownPassword successful', JSON.parse(response).ret);
              return true;
            })
            .fail(function (res) {
              console.log('getunknownPassword failed', JSON.parse(res).ret);
              return false;
            });
        }
        if (getSampleType.fileCount >= 0) {
          let _url = "/_api/cloudflow/v1.0/trigger/152da28a-6db9-5f6c-a733-9b4adbbdc03c";
          shell
            .ajaxSafePost({
              type: 'POST',
              url: _url,
              data: {
                eventData: JSON.stringify({
                  'token': arr[2],
                  'timestamp': arr[0],
                  'consumerid': arr[1],
                  'ticketnumber': "07541965",
                  "offset": 0,
                  "pageSize": 10,
                  "filter": ""
                })
              },
            })
            .done(function (response) {
              console.log('getfileCount successful', JSON.parse(response).ret);
              return true;
            })
            .fail(function (res) {
              console.log('getfileCount failed', JSON.parse(res).ret);
              return false;
            });
        }
        if (getSampleType.emailCount >= 0) {
          let _url = "/_api/cloudflow/v1.0/trigger/2aa09711-6511-f7ad-49ed-a6712e5b1bc1";
          shell
            .ajaxSafePost({
              type: 'POST',
              url: _url,
              data: {
                eventData: JSON.stringify({
                  'token': arr[2],
                  'timestamp': arr[0],
                  'consumerid': arr[1],
                  'ticketnumber': "07545957",
                  "offset": 0,
                  "pageSize": 10,
                  "filter": ""
                })
              },
            })
            .done(function (response) {
              console.log('getemailCount successful', JSON.parse(response).ret);
              return true;
            })
            .fail(function (res) {
              console.log('getemailCount failed', JSON.parse(res).ret);
              return false;
            });
        }
        if (getSampleType.urlCount >= 0) {
          let _url = "/_api/cloudflow/v1.0/trigger/242d1d64-3653-0cc6-2418-49beb53683d2";
          shell
            .ajaxSafePost({
              type: 'POST',
              url: _url,
              data: {
                eventData: JSON.stringify({
                  'token': arr[2],
                  'timestamp': arr[0],
                  'consumerid': arr[1],
                  'ticketnumber': "07545957",
                  "offset": 0,
                  "pageSize": 10,
                  "filter": ""
                })
              },
            })
            .done(function (response) {
              console.log('geturlCount successful', JSON.parse(response).ret);
              return true;
            })
            .fail(function (res) {
              console.log('geturlCount failed', JSON.parse(res).ret);
              return false;
            });
        }
        return true;
      })
      .fail(function (res) {
        console.log('getSampleType failed', JSON.parse(res).ret);
        return false;
      });
  }

  const formatTimeStampe = (timestamp) => {
    // Timestamp in milliseconds
    //var timestamp = 1712565273177;

    // Create a new Date object with the timestamp
    var date = new Date(timestamp);

    // Extract the date components
    var year = date.getFullYear();
    var month = ('0' + (date.getMonth() + 1)).slice(-2); // Months are zero-based
    var day = ('0' + date.getDate()).slice(-2);
    var hours = ('0' + date.getHours()).slice(-2);
    var minutes = ('0' + date.getMinutes()).slice(-2);

    // Format the date
    var formattedDate = year + '/' + month + '/' + day + ' ' + hours + ':' + minutes;
    console.log(formattedDate);
    return formattedDate;
  }

  const pullNeuronMalwareFile = () => {
    const arr = getNeuronAuthentication();
    let _url = "/_api/cloudflow/v1.0/trigger/4df2ac37-ed18-6692-0aba-b196b94106bf";
    shell
      .ajaxSafePost({
        type: 'POST',
        url: _url,
        data: {
          eventData: JSON.stringify({
            'token': arr[2],
            'timestamp': arr[0],
            'consumerid': arr[1],
            'ticketnumber': "07541965",
          })
        },
      })
      .done(function (response) {
        console.log('pullNeuronMalwareFile successful', JSON.parse(JSON.parse(response).ret).result);
        let pullFileArr = JSON.parse(JSON.parse(response).ret).result;

        for (var i = 0; i < pullFileArr.length; i++) {
          let file = {};
          file.fileName = pullFileArr[i].entityGroupName;
          file.fileSize = (pullFileArr[i].fileSizeInBytes) / 1024;
          file.uploadTime = formatTimeStampe(pullFileArr[i].submissionTime);
          file.downloadURL = pullFileArr[i].downloadURL;
          fileArr.push(file);
        }
        console.log('fileArr', fileArr);
        return true;
      })
      .fail(function (res) {
        console.log(res.message);
        return false;
      });
  }

  const getNewUUID = () => {
    let TS = Math.floor(new Date().getTime() / 1000);
    let OrgId = '467ccc39-3c89-ee11-8174-00224828232d';
    let UserId = 'PBOXACCTEXTERNAL';
    let key = CryptoJS.enc.Utf8.parse('*_@^*EY_*Y_*^*_@~$_K*~$_KEY_E_@*');

    let iv_text = new Date().getTime() + '123';
    let iv = CryptoJS.enc.Utf8.parse(iv_text);
    let paramText =
      'newUUID' +
      ';' +
      OrgId +
      ';' +
      UserId +
      ';' +
      TS +
      ';';
    let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(paramText), key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
    let queryInfo = '?Query=' + encodeURIComponent(encryptedBase64Str) + '&iv=' + iv_text + '&lang=en';
    console.log('queryInfo', queryInfo);
    let _url = "/_api/cloudflow/v1.0/trigger/5c9e4b18-df7f-0829-fc98-999187eedada";
    shell
      .ajaxSafePost({
        type: 'POST',
        url: _url,
        data: {
          eventData: JSON.stringify({
            'queryInfo': queryInfo
          })
        },
      })
      .done(function (response) {
        console.log('getUUid', JSON.parse(response).ret);
        let retVal = JSON.parse(JSON.parse(response).ret);
        if (retVal.status == 'success') {
          uuid = retVal.uuid;
          verifykey = retVal.verify_key;
          console.log('verify_key', verifykey);
        } else {
          console.log('getUUid Failed', JSON.parse(response).ret);
        }

        return true;
      })
      .fail(function (res) {
        console.log(res.message);
        return false;
      });
  }

  function caseDetailInit() {
    // Case detail
    const tabsContainerElement = getElement('.case-detail__tabs');
    const caseDetailAttachment = getElement('.case-detail__attachment');
    const addAttachmentButton = getElement('#add-attachment');
    const postResponseButton = getElement('button[data-action="post response"]');
    const messagesContainerElement = getElement('.messages-container');
    const viewMessagesButton = getElement('.view-all-messages .btn');
    const caseInfoSelect = getElement('#case-status__select');
    const ccRecipients = getElement('.cc-recipients');
    const ccRecipientsContainerElements = getElement('.case-info__block[data-info="cc-recipients"]');
    const expandButton = getElement('.expand-all-messages');

    tabsContainerElement.addEventListener('click', handleClickonCaseDetailTab);
    addAttachmentButton.addEventListener('click', toggleAttachment);
    postResponseButton.addEventListener('click', postResponse);
    viewMessagesButton.addEventListener('click', toggleViewMessages);
    caseInfoSelect.addEventListener('change', closeCase);
    ccRecipients.addEventListener('click', handleClickonCCRecipients);
    expandButton.addEventListener('click', toggleExpandAllMessages);
    messagesContainerElement.addEventListener('click', toggleExpandMessage)

    const issueType = "<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tjYXNlSW5mby5jcm1faXNzdWVfY2F0ZWdvcnkubGFiZWx9fQ=="></span>".toLowerCase();
    console.log(issueType);

    if (issueType === 'threat concern') {
      const attachmentsContainerMarkup = `<div class="attachments-container flex gap-6"></div>`;
      caseDetailAttachment.insertAdjacentHTML(
        'beforeend',
        attachmentsContainerMarkup
      );
      const attachmentsContainerElement = getElement(
        '#tab-content__case-detail .attachments-container'
      );
      emailOrVirusAttachmentInstance = new BaseAttachment(
        attachmentState?.virusOrEmail,
        attachmentsContainerElement,
        handleGetVirusOrEmailFiles,
        handleDeleteUploadFiles
      );
      supportingFileAttachmentInstance = new BaseAttachment(
        attachmentState?.supportingFile,
        attachmentsContainerElement,
        handleGetSupportingFiles,
        handleDeleteUploadFiles
      );
    } else {
      productAttachmentInstance = new BaseAttachment(
        attachmentState.productIssue,
        caseDetailAttachment,
        handleGetProductFile,
        handleDeleteUploadFiles
      );
    }

    new BaseEmail(CCEmailState?.caseDetail, ccRecipientsContainerElements, handleUpdateCCRecipients);

    // URL text results, Virus file, email results
    const tablistElements = getElement('.tab-content .tablist');
    const tabContents = getElement('.tab-content table');
    const closeEscalationBtns = getElement('.escalation-modal button[data-action="close-modal"]');
    const submitEscalationBtns = getElement('.escalation-modal button[data-action="submit-escalation"]');
    const paginationElements = getElement('.case-detail__pagination');

    caseDetailBackdrop.addEventListener('click', closeEscalationModal);
    tablistElements?.forEach(list => list.addEventListener('click', handleClickOnTabs));
    paginationElements?.forEach(pagination => new BasePagination(5, 2, pagination, handleClickOnPagination));
    tabContents.forEach(content => content.addEventListener('click', clickonEscalateButton));
    closeEscalationBtns.forEach(button => button.addEventListener('click', closeEscalationModal));
    submitEscalationBtns.forEach(button => button.addEventListener('click', submitEscalation));

    const modalArr = [
      {
        modalElement: getElement('#escalation-modal__virus-file .modal-content'),
        checkboxState: checkboxStates?.virusFile,
        inputState: inputStates?.virusFile
      },
      {
        modalElement: getElement('#escalation-modal__email-results .modal-content'),
        checkboxState: checkboxStates?.emailResults,
        inputState: inputStates?.emailResults
      }
    ]

    console.log(modalArr)

    modalArr.forEach(modal => {
      new CheckboxInput(modal?.checkboxState, modal?.modalElement, handleChangeOnCheckbox);
      new BaseInput(modal?.inputState, modal?.modalElement, handleGetInputValue);
    })

    URLCategoryData = URLReclassificationCategory;
    defaultURLCategory = CCEmailState.URLResults.emailList;

    dropdownStates.newClass.dropdownList = Object.keys(URLCategoryData).map(key => {
      return {
        label: key,
        value: key
      }
    });

    const URLModalContent = getElement('#escalation-modal__url-results .modal-content');
    const addCategoryButton = getElement('#escalation-modal__url-results .add-category');

    new RadioInput(radioState?.escalationType, URLModalContent, handleChangeOnRadio);
    URLCategoryListInstance = new BaseEmail(CCEmailState?.URLResults, URLModalContent, handleUpdateURLCategory);
    new Dropdown(dropdownStates?.newClass, URLModalContent, handleGetDropdownValue);
    URLCategoryDropdownInstance = new Dropdown(dropdownStates?.newCategory, URLModalContent, handleGetDropdownValue);
    addCategoryButton.addEventListener('click', addURLCategory);

    const unknownPasswordInput = getElement('#unknown-password__password');
    unknownPasswordInput.addEventListener('input', handleGetPassword);

    const attkLogsHostName = getElement('.attk-logs__host-name');
    const attkLogsStep0 = getElement('.attk-logs__step[data-step="0"]');
    const attkLogsStep1 = getElement('.attk-logs__step[data-step="1"]');
    const attkLogsStep3 = getElement('.attk-logs__step[data-step="3"]');
    const generatePackageBtn = getElement('.attk-generate-package__button');
    const submitAttkLogsBtn = getElement('#tab-content__attk-logs button[data-action="submit"]');
    const messageBoxState = {
      id: 'attk-logs__warning-message',
      type: 'warning',
      title: '',
      message: '5 suspicious files were identified. Please see the list below ',
      buttonText: '',
    }

    new Dropdown(dropdownStates?.hostName, attkLogsHostName, handleGetDropdownValue);
    new MessageBox(messageBoxState, attkLogsStep0);
    new RadioInput(radioState?.attkLogsRadio, attkLogsStep0, handleChangeOnRadio);
    attkLogsAttachmentInstance = new BaseAttachment(attachmentState.attkLogsAttachment, attkLogsStep3, handleGetAttkLogFile, handleDeleteUploadFiles);
    attkLogsStep1.addEventListener('click', handleClickonAttkLogsCollectedTool);
    generatePackageBtn.addEventListener('click', generateAttkPackageFile);
    submitAttkLogsBtn.addEventListener('click', submitAttkLogs);

    pullNeuronMalwareFile();
    getSampleType();
    getNewUUID();
  }

  caseDetailInit();
</script>
<div id="itbjihk" class="row sectionBlockLayout text-left" style="display: flex; flex-wrap: wrap; margin: 0px; min-height: auto; padding: 8px;">
  <div class="container" id="iu0yvzw" style="padding: 0px; display: flex; flex-wrap: wrap;"><div class="col-md-12 columnBlockLayout" style="flex-grow: 1; display: flex; flex-direction: column; min-width: 250px; word-break: break-word;"></div></div>
</div>
</div>
    </div>
</div>
        <div data-editorblocktype="Footer" data-record-id="cf7190b1-b4aa-ee11-be37-0022482b2538" > 

<style>
  footer {
    width: 100%;
    padding-block: 1.5rem;
  }

  footer>.container {
    gap: 8rem;
  }

  .footer__left {
    gap: 1.5rem;
    width: fit-content;
    min-width: 184px;
  }

  .footer-logo {
    width: 150px;
  }

  .footer__left>button {
    box-shadow: 0px 4px 15px 0px rgba(196, 196, 196, 0.35);
  }

  .footer__right {
    width: 100%;
  }

  .footer__list {
    flex: 1 1 200px;
    color: var(--clr-white);
    line-height: 20px;
  }

  .footer__list .footer__list-heading {
    margin-bottom: 1.75rem;
    color: var(--clr-neutral-450);
    font-size: var(--fs-300);
    font-family: var(--ff-open-sans);
    letter-spacing: -0.16px;
  }

  .footer__list li {
    font-size: var(--fs-200);
    font-family: var(--ff-inter);
  }

  .footer__list li:not(:last-child) {
    margin-bottom: 1.25rem;
  }

  .footer__list a {
    color: inherit;
  }

  .footer__list a:hover {
    color: var(--clr-neutral-400);
  }

  .footer__right>.divider {
    width: 100%;
    height: 1px;
    margin-block: 2rem;
    background-color: #d1d3d4;
  }

  .footer__left .dropdown__button,
  .footer__left .dropdown__menu li a {
    font-family: var(--ff-inter);
  }

  .footer-bottom {
    width: 100%;
    padding-block: 0.5rem;
    color: #d1d3d4;
  }

  @media only screen and (max-width: 860px) {
    footer>.container {
      gap: 2rem;
    }

    .footer__list {
      flex: auto;
    }

    .footer__right .list-container {
      flex-direction: column;
      gap: 1rem;
    }

    .footer__list ul {
      display: none;
    }

    .copyright {
      margin-top: 0.5rem;
    }
  }

  @media only screen and (max-width: 580px) {
    footer {
      padding-block: 1rem;
    }

    footer>.container {
      flex-direction: column;
      gap: 2rem;
    }

    .footer__right>.divider {
      margin-block: 1rem;
    }

    .footer-bottom {
      font-size: 11px;
    }
  }
</style>

<footer class="bg-black">
  <div class="container flex">
    <div class="footer__left relative flex flex-col items-stretch fs-200 ff-inter">
      <div class="language-selector"></div>
      <div class="footer-logo">
        <img src="/trendmicro_logo_white.webp" alt="Trend Micro">
      </div>
      <button class="btn primary">
        <svg xmlns="http://www.w3.org/2000/svg" width="18" height="16" viewBox="0 0 18 16" fill="none">
          <path
            d="M8.73865 12.1276C8.73829 12.1276 8.73757 12.1276 8.73721 12.1276C8.64097 12.1269 8.55263 12.076 8.50487 11.9931L7.78485 10.7446H7.46668C6.02666 10.7446 4.66923 10.1851 3.64397 9.16904C2.61872 8.15295 2.0542 6.80765 2.0542 5.38049C2.0542 3.94871 2.62051 2.59914 3.649 1.58019C4.67713 0.561254 6.03923 0 7.48356 0H10.0077C12.9614 0 15.3642 2.38133 15.3642 5.3086V5.43708C15.3642 8.36364 12.9618 10.745 10.0085 10.745H9.71183L8.97063 11.996C8.92251 12.0775 8.83417 12.1276 8.73865 12.1276ZM7.48356 0.53385C6.18287 0.53385 4.95616 1.03958 4.02966 1.9578C3.10316 2.87603 2.59286 4.09178 2.59286 5.38085C2.59286 6.66529 3.10136 7.87677 4.02463 8.79179C4.9479 9.70681 6.1703 10.2108 7.46632 10.2108H7.94071C8.03731 10.2108 8.12673 10.262 8.17449 10.3453L8.74152 11.3283L9.32543 10.3428C9.37391 10.2613 9.46225 10.2111 9.55777 10.2111H10.0085C12.6644 10.2111 14.8255 8.06967 14.8255 5.43708V5.3086C14.8255 2.67565 12.6644 0.53385 10.0077 0.53385H7.48356Z"
            fill="white" />
          <path
            d="M6.26528 6.29105C5.74742 6.29105 5.32617 5.87358 5.32617 5.36037C5.32617 4.84716 5.74742 4.42969 6.26528 4.42969C6.78314 4.42969 7.20439 4.84716 7.20439 5.36037C7.20439 5.87358 6.78278 6.29105 6.26528 6.29105ZM6.26528 4.96354C6.04442 4.96354 5.86486 5.14149 5.86486 5.36037C5.86486 5.57925 6.04442 5.7572 6.26528 5.7572C6.48614 5.7572 6.66571 5.57925 6.66571 5.36037C6.66571 5.14149 6.48579 4.96354 6.26528 4.96354Z"
            fill="white" />
          <path
            d="M8.70962 6.29105C8.19176 6.29105 7.77051 5.87358 7.77051 5.36037C7.77051 4.84716 8.19176 4.42969 8.70962 4.42969C9.22748 4.42969 9.64873 4.84716 9.64873 5.36037C9.64873 5.87358 9.22748 6.29105 8.70962 6.29105ZM8.70962 4.96354C8.48876 4.96354 8.30919 5.14149 8.30919 5.36037C8.30919 5.57925 8.48876 5.7572 8.70962 5.7572C8.93048 5.7572 9.11004 5.57925 9.11004 5.36037C9.11004 5.14149 8.93048 4.96354 8.70962 4.96354Z"
            fill="white" />
          <path
            d="M11.1542 6.29105C10.6364 6.29105 10.2152 5.87358 10.2152 5.36037C10.2152 4.84716 10.6364 4.42969 11.1542 4.42969C11.6721 4.42969 12.0933 4.84716 12.0933 5.36037C12.0933 5.87358 11.6721 6.29105 11.1542 6.29105ZM11.1542 4.96354C10.9334 4.96354 10.7539 5.14149 10.7539 5.36037C10.7539 5.57925 10.9334 5.7572 11.1542 5.7572C11.3751 5.7572 11.5546 5.57925 11.5546 5.36037C11.5546 5.14149 11.3751 4.96354 11.1542 4.96354Z"
            fill="white" />
          <path
            d="M16.6223 16.0003C16.5745 16.0003 16.5271 15.9878 16.4844 15.9625L15.0896 15.1372C14.5438 15.3536 13.9674 15.4632 13.3741 15.4632H11.1969C10.1472 15.4632 9.11509 15.1045 8.29094 14.4528C7.48006 13.8118 6.89902 12.9139 6.65519 11.9242C6.61999 11.7811 6.70833 11.6366 6.85306 11.6013C6.99742 11.5665 7.14322 11.654 7.17877 11.7975C7.3946 12.673 7.90884 13.4677 8.62706 14.0353C9.36683 14.6201 10.2556 14.9294 11.1972 14.9294H13.3741C13.9401 14.9294 14.4885 14.8165 15.0038 14.5941C15.0835 14.5596 15.1747 14.5656 15.2494 14.6098L16.1802 15.1607L15.9224 14.2521C15.8937 14.1514 15.9274 14.0432 16.0079 13.9759C16.9311 13.2036 17.4608 12.0751 17.4608 10.8792V10.7693C17.4608 9.55137 16.9153 8.40893 15.964 7.63556C15.8491 7.54195 15.8323 7.37397 15.9267 7.25973C16.0211 7.14584 16.1906 7.12911 16.3059 7.22271C17.3825 8.09787 17.9998 9.3905 17.9998 10.7689V10.8789C17.9998 12.1743 17.4508 13.4001 16.4873 14.2692L16.8823 15.6607C16.9121 15.7661 16.8744 15.8786 16.7868 15.9451C16.7379 15.9818 16.6805 16.0003 16.6223 16.0003Z"
            fill="white" />
          <path
            d="M1.37718 13.9968C1.31936 13.9968 1.26154 13.9783 1.21342 13.9417C1.1258 13.8751 1.0881 13.7626 1.1179 13.6573L1.51292 12.2657C0.549075 11.3973 0 10.1716 0 8.87613V8.76615C0 7.70557 0.373831 6.67168 1.05254 5.85418C1.14699 5.74029 1.31685 5.72392 1.43176 5.81788C1.54668 5.91148 1.56319 6.07982 1.46839 6.19371C0.86904 6.91547 0.538661 7.82907 0.538661 8.76615V8.87613C0.538661 10.072 1.06834 11.2005 1.99161 11.9728C2.07241 12.0404 2.10581 12.1483 2.07708 12.249L1.81924 13.1576L2.75004 12.6067C2.82474 12.5625 2.91595 12.5568 2.99567 12.591C3.51099 12.8134 4.05935 12.9263 4.6253 12.9263H6.13643C6.2851 12.9263 6.40576 13.0459 6.40576 13.1932C6.40576 13.3405 6.2851 13.4601 6.13643 13.4601H4.6253C4.0317 13.4601 3.45533 13.3505 2.90985 13.1341L1.51507 13.9594C1.47234 13.9844 1.42458 13.9968 1.37718 13.9968Z"
            fill="white" />
        </svg>
        Feedback
      </button>
    </div>
    <div class="footer__right">
      <div class="list-container flex justify-between">
        <div class="footer__list">
          <h5 class="footer__list-heading"><span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9TdXBwb3J0JyB0eXBlOiAndGV4dCcgJX0=" data-record-id="517f47fd-ffad-ee11-a569-0022482b2538" data-ppid="517f47fd-ffad-ee11-a569-0022482b2538" >Support and Help</span></h5>
          <ul>
            <li>
              <a href="/faq"><span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9TdXBwb3J0L0ZBUScgdHlwZTogJ3RleHQnICV9" data-record-id="21984faf-00ae-ee11-a569-0022482b2538" data-ppid="21984faf-00ae-ee11-a569-0022482b2538" >FAQ</span></a>
            </li>
            <li><a href="https://status.trendmicro.com/s/en-US/" target="_blank">Service Status</a></li>
            <li><a href="https://automation.trendmicro.com/" target="_blank">Automation Center</a></li>
            <li>
              <a href="https://www.trendmicro.com/en_us/business/get-info-form.html" target="_blank">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9TdXBwb3J0L0NvbnRhY3QgYnkgU2FsZXMnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="0bf0037e-01ae-ee11-a569-0022482c8a35" data-ppid="0bf0037e-01ae-ee11-a569-0022482c8a35" >Contact by Sales</span>
              </a>
            </li>
          </ul>
        </div>
        <div class="footer__list">
          <h5 class="footer__list-heading">Resources</h5>
          <ul>
            <li>
              <a href="https://www.trendmicro.com/zh_tw/business/products/downloads.html?regs=TW"
                target="_blank">Download
                Center</a>
            </li>
            <li><a href="https://docs.trendmicro.com/en-US/documentation/" target="_blank">Online Help Center</a></li>
            <li>
              <a href="/trendconnect">
                <div data-editorblocktype="ContentSnippet_html" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9SZXNvdXJjZXMvVHJlbmRDb25uZWN0IE1vYmlsZSBBcHAnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="" data-ppid="" >找不到 Liquid 物件: Footer/Resources/TrendConnect Mobile App</div>
              </a>
            </li>
          </ul>
        </div>
        <div class="footer__list">
          <h5 class="footer__list-heading">Policies & Vulnerability</h5>
          <ul>
            <li>
              <a href="/support-policy">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9BYm91dC9TdXBwb3J0IFBvbGljeScgdHlwZTogJ3RleHQnICV9" data-record-id="b9d340f0-04ae-ee11-a569-0022482c8a35" data-ppid="b9d340f0-04ae-ee11-a569-0022482c8a35" >Support Policy</span>
              </a>
            </li>
            <li>
              <a href="https://www.trendmicro.com/en_us/about/legal.html?_ga=2.27698876.1620801240.1623762993-1589113093.1623762993"
                target="_blank">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9BYm91dC9MZWdhbCBQb2xpY2llcyBBbmQgUHJpdmFjeScgdHlwZTogJ3RleHQnICV9" data-record-id="299d265a-06ae-ee11-a569-0022482b2db5" data-ppid="299d265a-06ae-ee11-a569-0022482b2db5" >Legal Policies & Privacy</span>
              </a>
            </li>
            <li>
              <a href="/vulnerability-response">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9BYm91dC9WdWxuZXJhYmlsaXR5IFJlc3BvbnNlcycgdHlwZTogJ3RleHQnICV9" data-record-id="a3dc8c26-05ae-ee11-a569-0022482c8a35" data-ppid="a3dc8c26-05ae-ee11-a569-0022482c8a35" >Vulnerability Responses</span>
              </a>
            </li>
          </ul>
        </div>
        <div class="footer__list">
          <h5 class="footer__list-heading">About Trend</h5>
          <ul>
            <li>
              <a href="https://www.trendmicro.com/en_us/business.html" target="_blank">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9Db21wYW55L1RyZW5kIE1pY3JvJyB0eXBlOiAndGV4dCcgJX0=" data-record-id="ee9275d1-0aae-ee11-a569-0022482b2db5" data-ppid="ee9275d1-0aae-ee11-a569-0022482b2db5" >Trend Micro</span>
              </a>
            </li>
            <li>
              <a href="https://trendmicro.my.site.com/Gpartner/s/login/?language=en_US" target="_blank">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9Db21wYW55L1BhcnRuZXIgUG9ydGFsJyB0eXBlOiAndGV4dCcgJX0=" data-record-id="02eebc65-0bae-ee11-a569-0022482b2db5" data-ppid="02eebc65-0bae-ee11-a569-0022482b2db5" >Partner Portal</span>
              </a>
            </li>
            <li>
              <a href="https://www.youtube.com/channel/UCyRUBssUwx5mpUM7ctVNr-A" target="_blank">
                Trend Micro Youtube
              </a>
            </li>
            <li>
              <a href="https://success.trendmicro.com/community/s/" target="_blank">Trend Business Community</a>
            </li>
            <li>
              <a href="https://helpcenter.trendmicro.com/en-us/" target="_blank">
                <span data-editorblocktype="ContentSnippet_text" data-liquidexpressionvalue="eyUgZWRpdGFibGUgc25pcHBldHMgJ0Zvb3Rlci9Db21wYW55L0hvbWUgQW5kIEhvbWUgT2ZmaWNlIFN1cHBvcnQnIHR5cGU6ICd0ZXh0JyAlfQ==" data-record-id="b5393205-0bae-ee11-a569-0022482b2db5" data-ppid="b5393205-0bae-ee11-a569-0022482b2db5" >Home & Home Office Support</span>
              </a>
            </li>
          </ul>
        </div>
      </div>

      <div class="divider" role="separator"></div>
      <div class="footer-bottom fs-200 ff-inter">
        <p class="copyright">
          Copyright © 2024 Trend Micro Incorporated. All rights reserved.
        </p>
      </div>
    </div>
  </div>
</footer>

<script type="module">
  import { getElement } from '/helper.js';
  import { Dropdown } from '/class.js';

  let languageSelectorState = {
    id: 1,
    label: '',
    dropdownList: [
      {
        label: 'English',
        value: 'en-US',
        url: '/en-US',
        isLink: true
      },
      {
        label: '日本語',
        value: 'ja-JP',
        url: '/ja-JP',
        isLink: true
      },
      {
        label: '繁體中文(台灣)',
        value: 'zh-TW',
        url: '/zh-TW',
        isLink: true
      },
    ]
  }

  function footerInitiation() {
    const curLanguage = '<span data-editorblocktype="Liquid" data-liquidexpressionvalue="e3tsYW5ndWFnZX19"></span>';
    const pathname = window.location.pathname.toLowerCase();
    const updatedDropdownList = languageSelectorState.dropdownList.map((langObj) => {
      return {
        ...langObj,
        url: pathname.replace(curLanguage, langObj.value)
      }
    })

    languageSelectorState.dropdownList = updatedDropdownList;

    const footerLeftElement = getElement('.footer__left .language-selector');
    const footerLanguageSelector = new Dropdown(languageSelectorState, footerLeftElement);
    const curLanguageState = languageSelectorState.dropdownList.find(lang => lang.value.toLowerCase() === curLanguage);

    footerLanguageSelector.setDefaultValue(curLanguageState?.value);
  }

  footerInitiation();
</script> </div>
        

        <script type="text/javascript">
          // Fix for incorrect viewport width setting in IE 10 on Windows Phone 8.
          if (navigator.userAgent.match(/IEMobile/10.0/)) {
            var msViewportStyle = document.createElement("style");
            msViewportStyle?.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}"));
            document.getElementsByTagName("head")[0]?.appendChild(msViewportStyle);
          }
        </script>
      </body>
    </html>
  