{"ScriptPreparationCode":"function uuidCrypto() {\r\n let bytes = window.crypto.getRandomValues(new Uint8Array(32));\r\n const randomBytes = () =\u003E (bytes = bytes.slice(1)) \u0026\u0026 bytes[0];\r\n\r\n return \u0027xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\u0027.replace(/[xy]/g, c =\u003E (c ^ randomBytes() \u0026 15 \u003E\u003E c / 4).toString(16))\r\n}\r\n\r\nfunction uuidMath() {\r\n\t\t\t\treturn \u0027xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\u0027.replace(/[xy]/g, c =\u003E {\r\n\t\t\t\t\tconst r = (Math.random() * 16) | 0;\r\n\t\t\t\t\tconst v = c === \u0027x\u0027 ? r : (r \u0026 0x3) | 0x8;\r\n\t\t\t\t\treturn v.toString(16);\r\n\t\t\t\t});\r\n}\r\n\r\nfunction uuidCryptoNumber() {\r\n let bytes = window.crypto.getRandomValues(new Uint8Array(32));\r\n const randomBytes = () =\u003E (bytes = bytes.slice(1)) \u0026\u0026 bytes[0];\r\n\r\n return ([1e7] \u002B -1e3 \u002B -4e3 \u002B -8e3 \u002B -1e11).replace(/[018]/g, c =\u003E \r\n (c ^ randomBytes() \u0026 15 \u003E\u003E c / 4).toString(16)\r\n );\r\n}","TestCases":[{"Name":"math","Code":"uuidMath()","IsDeferred":false},{"Name":"crypto","Code":"uuidCrypto()","IsDeferred":false},{"Name":"crypto Number to String","Code":"uuidCryptoNumber()","IsDeferred":false}]}