UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

230 lines (225 loc) • 21.5 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const network_NetworkUtil = require('../network/NetworkUtil.cjs.cjs'); const AttributeIds = { Absorption: "minecraft:absorption", PlayerSaturation: "minecraft:player.saturation", PlayerExhaustion: "minecraft:player.exhaustion", KnockbackResistence: "minecraft:knockback_resistance", Health: "minecraft:health", Movement: "minecraft:movement", FollowRange: "minecraft:follow_range", PlayerHunger: "minecraft:player.hunger", AttackDamage: "minecraft:attack_damage", PlayerLevel: "minecraft:player.level", PlayerExperience: "minecraft:player.experience", UnderwaterMovement: "minecraft:underwater_movement", Luck: "minecraft:luck", FallDamage: "minecraft:fall_damage", HorseJumpStrength: "minecraft:horse.jump_strength", ZombieSpawnReinforcements: "minecraft:zombie.spawn_reinforcements", LavaMovement: "minecraft:lava_movement" }; class Attribute { name; min; max; default; value; /** * Class used to store Attribute data. * * @param {object} data - The attribute data. * @param {string} data.name - The name of the attribute. * @param {number} data.min - The minimum value of the attribute. * @param {number} data.max - The maximum value of the attribute. * @param {number} data.def - The default value of the attribute. * @param {number} data.value - The current value of the attribute. */ constructor({ name, min, max, def, value }) { this.name = name; this.min = min; this.max = max; this.default = def; this.value = value; } networkSerialize(stream) { stream.writeFloatLE(this.min); stream.writeFloatLE(this.max); stream.writeFloatLE(this.value); stream.writeFloatLE(this.default); network_NetworkUtil.NetworkUtil.writeString(stream, this.name); stream.writeUnsignedVarInt(0); } static networkDeserialize(stream) { const attr = new Attribute({ min: stream.readFloatLE(), max: stream.readFloatLE(), value: stream.readFloatLE(), def: stream.readFloatLE(), name: network_NetworkUtil.NetworkUtil.readString(stream) }); stream.readUnsignedVarInt(); return attr; } getName() { return this.name; } getMin() { return this.min; } getMax() { return this.max; } getDefault() { return this.default; } getValue() { return this.value; } } const MAX_FLOAT32 = 34028234663852886e22; class Attributes { attributes = []; /** * Returns a list of default attributes to send the first time a player spawns. */ getDefaults() { return [ new Attribute({ name: AttributeIds.Absorption, min: 0, max: 16, def: 0, value: 0 }), new Attribute({ name: AttributeIds.PlayerSaturation, min: 0, max: 20, def: 5, value: 4 }), new Attribute({ name: AttributeIds.PlayerExhaustion, min: 0, max: 20, def: 0, value: 0 }), new Attribute({ name: AttributeIds.KnockbackResistence, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.Health, min: 0, max: 20, def: 20, value: 20 }), new Attribute({ name: AttributeIds.Movement, min: 0, max: MAX_FLOAT32, def: 0.1, value: 0.1 }), new Attribute({ name: AttributeIds.FollowRange, min: 0, max: 2048, def: 16, value: 16 }), new Attribute({ name: AttributeIds.PlayerHunger, min: 0, max: 20, def: 20, value: 20 }), new Attribute({ name: AttributeIds.AttackDamage, min: 0, max: 1, def: 1, value: 1 }), new Attribute({ name: AttributeIds.PlayerLevel, min: 0, max: 24791, def: 0, value: 0 }), new Attribute({ name: AttributeIds.PlayerExperience, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.UnderwaterMovement, min: 0, max: MAX_FLOAT32, def: 0.02, value: 0.02 }), new Attribute({ name: AttributeIds.Luck, min: -1024, max: 1024, def: 0, value: 0 }), new Attribute({ name: AttributeIds.FallDamage, min: 0, max: MAX_FLOAT32, def: 1, value: 1 }), new Attribute({ name: AttributeIds.HorseJumpStrength, min: 0, max: 2, def: 0.7, value: 0.7 }), new Attribute({ name: AttributeIds.ZombieSpawnReinforcements, min: 0, max: 1, def: 0, value: 0 }), new Attribute({ name: AttributeIds.LavaMovement, min: 0, max: MAX_FLOAT32, def: 0.02, value: 0.02 }) ]; } getAttributes() { return this.attributes; } networkSerialize() { } } exports.Attribute = Attribute; exports.AttributeIds = AttributeIds; exports.Attributes = Attributes; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXR0cmlidXRlLmNqcy5janMiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lbnRpdHkvQXR0cmlidXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIEJpbmFyeVN0cmVhbSBmcm9tICdAanNwcmlzbWFyaW5lL2pzYmluYXJ5dXRpbHMnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWwgfSBmcm9tICcuLi9uZXR3b3JrL05ldHdvcmtVdGlsJztcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0ZUlkcyA9IHtcbiAgICBBYnNvcnB0aW9uOiAnbWluZWNyYWZ0OmFic29ycHRpb24nLFxuICAgIFBsYXllclNhdHVyYXRpb246ICdtaW5lY3JhZnQ6cGxheWVyLnNhdHVyYXRpb24nLFxuICAgIFBsYXllckV4aGF1c3Rpb246ICdtaW5lY3JhZnQ6cGxheWVyLmV4aGF1c3Rpb24nLFxuICAgIEtub2NrYmFja1Jlc2lzdGVuY2U6ICdtaW5lY3JhZnQ6a25vY2tiYWNrX3Jlc2lzdGFuY2UnLFxuICAgIEhlYWx0aDogJ21pbmVjcmFmdDpoZWFsdGgnLFxuICAgIE1vdmVtZW50OiAnbWluZWNyYWZ0Om1vdmVtZW50JyxcbiAgICBGb2xsb3dSYW5nZTogJ21pbmVjcmFmdDpmb2xsb3dfcmFuZ2UnLFxuICAgIFBsYXllckh1bmdlcjogJ21pbmVjcmFmdDpwbGF5ZXIuaHVuZ2VyJyxcbiAgICBBdHRhY2tEYW1hZ2U6ICdtaW5lY3JhZnQ6YXR0YWNrX2RhbWFnZScsXG4gICAgUGxheWVyTGV2ZWw6ICdtaW5lY3JhZnQ6cGxheWVyLmxldmVsJyxcbiAgICBQbGF5ZXJFeHBlcmllbmNlOiAnbWluZWNyYWZ0OnBsYXllci5leHBlcmllbmNlJyxcbiAgICBVbmRlcndhdGVyTW92ZW1lbnQ6ICdtaW5lY3JhZnQ6dW5kZXJ3YXRlcl9tb3ZlbWVudCcsXG4gICAgTHVjazogJ21pbmVjcmFmdDpsdWNrJyxcbiAgICBGYWxsRGFtYWdlOiAnbWluZWNyYWZ0OmZhbGxfZGFtYWdlJyxcbiAgICBIb3JzZUp1bXBTdHJlbmd0aDogJ21pbmVjcmFmdDpob3JzZS5qdW1wX3N0cmVuZ3RoJyxcbiAgICBab21iaWVTcGF3blJlaW5mb3JjZW1lbnRzOiAnbWluZWNyYWZ0OnpvbWJpZS5zcGF3bl9yZWluZm9yY2VtZW50cycsXG4gICAgTGF2YU1vdmVtZW50OiAnbWluZWNyYWZ0OmxhdmFfbW92ZW1lbnQnXG59O1xuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1pbjogbnVtYmVyO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0OiBudW1iZXI7XG4gICAgcHJpdmF0ZSByZWFkb25seSB2YWx1ZTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQ2xhc3MgdXNlZCB0byBzdG9yZSBBdHRyaWJ1dGUgZGF0YS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7b2JqZWN0fSBkYXRhIC0gVGhlIGF0dHJpYnV0ZSBkYXRhLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkYXRhLm5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhLm1pbiAtIFRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGRhdGEubWF4IC0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGF0YS5kZWYgLSBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkYXRhLnZhbHVlIC0gVGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29uc3RydWN0b3Ioe1xuICAgICAgICBuYW1lLFxuICAgICAgICBtaW4sXG4gICAgICAgIG1heCxcbiAgICAgICAgZGVmLFxuICAgICAgICB2YWx1ZVxuICAgIH06IHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICBtaW46IG51bWJlcjtcbiAgICAgICAgbWF4OiBudW1iZXI7XG4gICAgICAgIGRlZjogbnVtYmVyO1xuICAgICAgICB2YWx1ZTogbnVtYmVyO1xuICAgIH0pIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5taW4gPSBtaW47XG4gICAgICAgIHRoaXMubWF4ID0gbWF4O1xuICAgICAgICB0aGlzLmRlZmF1bHQgPSBkZWY7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmV0d29ya1NlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IHZvaWQge1xuICAgICAgICBzdHJlYW0ud3JpdGVGbG9hdExFKHRoaXMubWluKTtcbiAgICAgICAgc3RyZWFtLndyaXRlRmxvYXRMRSh0aGlzLm1heCk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy52YWx1ZSk7XG4gICAgICAgIHN0cmVhbS53cml0ZUZsb2F0TEUodGhpcy5kZWZhdWx0KTtcbiAgICAgICAgTmV0d29ya1V0aWwud3JpdGVTdHJpbmcoc3RyZWFtLCB0aGlzLm5hbWUpO1xuICAgICAgICBzdHJlYW0ud3JpdGVVbnNpZ25lZFZhckludCgwKTsgLy8gVE9ETzogbW9kaWZpZXIgY291bnRcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIG5ldHdvcmtEZXNlcmlhbGl6ZShzdHJlYW06IEJpbmFyeVN0cmVhbSk6IEF0dHJpYnV0ZSB7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgIG1pbjogc3RyZWFtLnJlYWRGbG9hdExFKCksXG4gICAgICAgICAgICBtYXg6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgdmFsdWU6IHN0cmVhbS5yZWFkRmxvYXRMRSgpLFxuICAgICAgICAgICAgZGVmOiBzdHJlYW0ucmVhZEZsb2F0TEUoKSxcbiAgICAgICAgICAgIG5hbWU6IE5ldHdvcmtVdGlsLnJlYWRTdHJpbmcoc3RyZWFtKVxuICAgICAgICB9KTtcbiAgICAgICAgc3RyZWFtLnJlYWRVbnNpZ25lZFZhckludCgpOyAvLyBUT0RPOiBza2lwIGZvciBub3dcbiAgICAgICAgcmV0dXJuIGF0dHI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWluKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWF4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm1heDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTtcbiAgICB9XG59XG5cbmNvbnN0IE1BWF9GTE9BVDMyID0gMy40MDI4MjM0NjYzODUyODg2ZTM4O1xuZXhwb3J0IGNsYXNzIEF0dHJpYnV0ZXMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYXR0cmlidXRlczogQXR0cmlidXRlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBsaXN0IG9mIGRlZmF1bHQgYXR0cmlidXRlcyB0byBzZW5kIHRoZSBmaXJzdCB0aW1lIGEgcGxheWVyIHNwYXducy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVmYXVsdHMoKSB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuQWJzb3JwdGlvbixcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxNixcbiAgICAgICAgICAgICAgICBkZWY6IDAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLlBsYXllclNhdHVyYXRpb24sXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiA1LFxuICAgICAgICAgICAgICAgIHZhbHVlOiA0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeGhhdXN0aW9uLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuS25vY2tiYWNrUmVzaXN0ZW5jZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuSGVhbHRoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIwLFxuICAgICAgICAgICAgICAgIGRlZjogMjAsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDIwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Nb3ZlbWVudCxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDAuMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4xXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5Gb2xsb3dSYW5nZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAyMDQ4LFxuICAgICAgICAgICAgICAgIGRlZjogMTYsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDE2XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJIdW5nZXIsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjAsXG4gICAgICAgICAgICAgICAgZGVmOiAyMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMjBcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkF0dGFja0RhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuUGxheWVyTGV2ZWwsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogMjQ3OTEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5QbGF5ZXJFeHBlcmllbmNlLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDEsXG4gICAgICAgICAgICAgICAgZGVmOiAwLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5VbmRlcndhdGVyTW92ZW1lbnQsXG4gICAgICAgICAgICAgICAgbWluOiAwLFxuICAgICAgICAgICAgICAgIG1heDogTUFYX0ZMT0FUMzIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjAyLFxuICAgICAgICAgICAgICAgIHZhbHVlOiAwLjAyXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGUoe1xuICAgICAgICAgICAgICAgIG5hbWU6IEF0dHJpYnV0ZUlkcy5MdWNrLFxuICAgICAgICAgICAgICAgIG1pbjogLTEwMjQsXG4gICAgICAgICAgICAgICAgbWF4OiAxMDI0LFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuRmFsbERhbWFnZSxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiBNQVhfRkxPQVQzMixcbiAgICAgICAgICAgICAgICBkZWY6IDEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDFcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZSh7XG4gICAgICAgICAgICAgICAgbmFtZTogQXR0cmlidXRlSWRzLkhvcnNlSnVtcFN0cmVuZ3RoLFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IDIsXG4gICAgICAgICAgICAgICAgZGVmOiAwLjcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IDAuN1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuWm9tYmllU3Bhd25SZWluZm9yY2VtZW50cyxcbiAgICAgICAgICAgICAgICBtaW46IDAsXG4gICAgICAgICAgICAgICAgbWF4OiAxLFxuICAgICAgICAgICAgICAgIGRlZjogMCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBuZXcgQXR0cmlidXRlKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBBdHRyaWJ1dGVJZHMuTGF2YU1vdmVtZW50LFxuICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICBtYXg6IE1BWF9GTE9BVDMyLFxuICAgICAgICAgICAgICAgIGRlZjogMC4wMixcbiAgICAgICAgICAgICAgICB2YWx1ZTogMC4wMlxuICAgICAgICAgICAgfSlcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlcygpOiBBdHRyaWJ1dGVbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgcHVibGljIG5ldHdvcmtTZXJpYWxpemUoKTogdm9pZCB7fVxufVxuIl0sIm5hbWVzIjpbIk5ldHdvcmtVdGlsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHTyxNQUFNLFlBQWUsR0FBQTtBQUFB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