Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                
	<input type="checkbox" id="play" checked><label for="play">Play</label><button id="animate">▶▶</button>
	<button id="reset">Reset Camera</button>
	<button id="execute">📷</button>
	<button id="create_apng">Create APNG</button>
	<button id="export">Export OBJ/MTL</button><br>
	<span id="camera_stats"></span><br>
  <div id="background">
	<canvas id="myCanvas" ></canvas>
  </div>
<img id="texture" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAMAAABrrFhUAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFAAAAAwMDCAgICQkJCgoKCwsLDAwMDQ0NDg4ODw8PEBAQERERFhYWFxcXGBgYGhoaGxsbHBwcICAgISEhIiIiIyMjR0dHS0tLTU1NV1dXXV1dYmJiaWlpcHBwdHR0dnZ2e3t7fX19lgC8zAD64Hn6hYWFioqKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfg9AhwAAAQB0Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AFP3ByUAABPNSURBVHja7V0Ll5s6Dk63cDeZsaHMdjIvyG3aJv//H97FD2z5Ib9IGLoL5/gAwSLJF1mfJMtk9w/fjseXoziihJBQy+3vk9f30VuqbGzLld3JL/Ty8iJvQEnXday13XhMQWOvU6Q/7zPKUHhOaSuOu1a9JmWo88GZnJBh/dX7ys/BryUBAD6r2ne47ATA6+urOGqaln950Uhjn4f7Y3KmfNNM99Gb3Z/18cnGNnCfpkmQlQC8HI9SpQn51rbt1JjymOdO/xZex+RMeaaU9gdx+hPqlY1tBH6GBFkJwPv7Uao0MX4HoUTwPNwfyFHsdd2MD273lQMHtKQhQPyfITYEfvw4vvo+yKiI1nmgP+hry4E+DVPu5uu/mqYJAUCAAk+yeQB0cBDhQ4Ap88swDH+z/dhMxSPEPsf7M8XG5LRio8bLHUSWbCoLgEFE4rK7l/e39/eXt3exP75QWxGp8btQvD8BfYmrwPJ+uPWODaJUFvB99gALvL4ePz5e3z5eP95Gy358jbGA09/b16PA0jInWO95LNBlsgBT5Lfj+9vxjSv3McYCTn9vX1eBY9bYZgE4oGRLYwF9H/gZYiwAbkBTWCBudTF2QD+4o/CFLDC5Up12iULvuwtY0QALgP6NV2kdBcbk3fvMZAHBMk5LBiDMAi3Bra6htK4CR6yx3d/jSpFc/z8lLnABCCsixa0uZAGbPeLW2OmfwQJclgqfX8YNMD6ZYoxu6hcEgCvMZEUbbdmFgod8eIMxgrFACgt0DUmX9Vr+FmEl8z6uDYgoEG51DaUNxgKoD394YP0OBx0LiGP+ekTWY/n9rGTeZ2cEvEUNYQGayQLs+sMD6/dw0INIHPPXkxiEEi+DmccmAEw5uLJoizkpEjEGgTpXVl6c57AAbsn5B3x8ZH0eD1qBxTF/PYlBsHjEeN0AwLS+tvsRO29Nyx8IZpNiAUPhuQIbgyLOIJC1iPl5kLhgZ/v6YRYgtnVHrH2bHwt0tsJzxTYGRZxBrHgEYSgDgCbofnjOm7TMT1EsYCg8V2wwKJIYBGEik6FMG2D52yQYlHrOEWvvjwW+hWMBoPBysKWxgJ99CMZQJgC2+xHJCIX7o/2i/ryt8NKlmQaFk0FCWcB7bLJVCIBm5nk0IxS05IbCc8Z5PLD942PQn/ezj8VQaSzgWG8SvY5Ye//rIRfLZYH05rf2GENlsEDrWn3c2mPHNotQ5bvrvL/j9gjfHqRSjZTqNMiYPDHfF4tNOowFwlbdPUetvRULdDnsIF8HLBAYXLaL1TSZx6YNIBYLZJ2bPnZKLICxgycWIImDi5DMYysWCAahkXPL306IBXSWRiqvVOqn79+/Pz08fB/3Dwd2/J31MyfIWjDhpd+PJvj/XYAFGjtvH7H66PW0jBCWsXl6fn5+enx8HvePB3b8jPd1Wue39hg7mEawzbLyAVYgmAWOZJRuMCMc/TyhWKBLtvIRViibF6C2tVfZHHGeBADGRAlzBFYs0EZigTbAEmXzAmGWafPnApDZYTQj5Fj5sNUOsELKvIAbCxD9noR47p89F+CdFwhmhFKtvNf3R1ggPRYg0JpT9/3T5gIQ/x9hhAwWcOcF8HPM9w7HAjqrZFv08DxCUiyAZIfCsQAJzw7j52Wzw9qXl5Y/MYOUxAJIdigcC9Dw7DCeMUphAeJnAe3iOO9fzgIEjVPuFAu0WFwQzO03qq9MxzZzWIAglr9NzQjReCyQmhFKnBcgqi/fO6yTxwJJsUkoI+Sx+jTCAjSvRsiTDp/uSYknI5XHApj/3wXmBcKZnNzYAA9asdnlYIYplwXQeAStF9rFZoMzzyOxgKdCtA3PQ6TWBYkGmEQcqwEAB1peRigvQxSdLwjPChOHdTKqQ5NbmAWSff/QLDD+un82misonJhrsNlor/zU9l9//R63X1/3SUPHEwvE8v7Bc2RmNhILZM5Ge+RbMn0WDQBJB0BnaKjlikznSqnt8zZ7drijc2ejg3HA/uvPEYFfP7/uaToATUbmxdsQC4xXinbS5xcz0iz7I2Wfnp9lPNCA2Wc+mPj9fHMDxvvvv375NW5fcobAPzM3fxYIjwXc2eaxPbHjpycrx5/ECsZ7jgB8+fnzy5ecITAbgMyMkIdFWEq0675PKdJwLBKcGWYAsC1nCMwFILdSVJViqPjh96/fzQjAMxkPWqM+ycc6wWyQBmC5IZBXKQrYQSj32O/3r1+/xwFD2F4wCRhA0djAeP/9V7ktOARyM0KZs83OeTAO0ADQTwAgcV5Arxlo/PME2vqTpEpVHUwDAJx+epHPIiyAV4rS6GxxuL8vozQNQBoYAnqRz60ByKwUdWuO7JZbqQpmmAND4OVlWuRzaxZoimaHp76ua2X0w1atmbGASqnu1eb0Y2sb7mMDSDQucGIHw8oT+hd34EcX9i8C2GNiCRKPJdRg0gA4/fRSz1sD4F8jQBNXkzHF/bcCgNLo7LTv/dUg0AA4/fRSz1sDgFSEJpY3cMVVADS+6ynzCvH1AQuwQEaN0GS1sZohfr0lklnknqjMTklbgAWC8wsBq5/b3ODaOqZ6HfI0gAi9IwsQe22BGShb6w9uF3sE64Cca3dkgTxlvAXrqHQn+QZYxXajqBF3vL0hLHALpfwT2vA3wgKGLw0aEuTa7oo8tgZAZ/r6/johJI3qcYta8D6ORoBEqM0CR760k7cfw48fr+D8FZsdzmx4/v8+9/XMLoNEKOXKLtiCu79vb2/vovGlnu/TOWCEHZK5SWwk0ee/1X09sQBIhNozwHx9s2gv7+/H6ZivecZqhHI/KJ75uct9PbEASITCwSr9/4+PjzfWXj8+9DFkhB2ZoajRys/ylrz2mIBEKIxLJv9/bFzpRxaQyi/WPGPl8pktkPmhc+6bvvaYgESoXQ3K/H/epgX/0zmIC2YCEMr/z7xv6uwySISSzHXGvkrR3IaXNJN73Jf4WEBlgWjmrPINWCCwaoze476EBgBIemKEAwAyi5vacmeH0++bWmkKEqE2CxTMDhdY66waofns4rEBaghA3z9jdnimtc6qEZrPLgEA9HtSmjM7fB9rPY9dMipNQSKUgAG4EAsQPPMzl11SK01BIhSmWhdiAbwidDa7pK43AIlQ9ZSILBZYZSyQWWPkaek2YK2xAMouZQ0HoLsHC2C+/I3ZBaZJ9TGFq9FiFafzY4Fm2VhAzR7zAaGeZNG52SeQdQo9R+g+PvsNYgH0/coGAQ4AvVNGiN6DXVr6z423HUg9gtIFb9rSSmeCZYvWPEAHF7809vOF7LSr+3gWVTEK7pNaOZoNQPlk0+e0mwPwzydt/TAMSzYUgL70C8wF4HQ69dfrqT9dr2djfzrJa9cz3J9O4/WTun5mr4PzXvVR95vO+TUUgKHwCwwzARj68/lyzm19XyqHA3DYl32BQjklfzlfLtltVOYiuTM+BE6FX+Q0EwClrHntVCqH24B92TcplVPyfb4ij63vz2VyOAD14VD0BQrlTBbgCjpIRRX78fVpLy34pPxDf9Hn4jUhp/fa6lsDZwgCsC8EYD+XBRZsuBGs9kXKXCzXM0v+ec0B4DLsDyW/ZakcU2RHWcGeKS3vYyiwPB+mY/UaGDCiP3R/xPlZDBo+eHpnKOyuJ/5FssdzqZxwYbQrk9eUXLG8A8C5r/dMmXN/y1K5frLmRSww9PPkXTbYnYf6IH7LvB+zVE4pc4k7o+SGYnkXgJP6IlkjulSun3z1EndGxQynYnnXCPYVU2TVko1goZxQYm6Rp73bTNdnek1eH/dKnveZ4gPrtR7KozHByALV9Dtm/Z6lcssGwW7zsIDzRXirT32EBcrksHz+3H7+sumEhIiy5mar+j6RBTLlQMWnXtROIs8LBYvfA1XLLVhEL6tIUwAYas/veKj7IZkFsuTUFzPz/HRuP76EU5VJp5dJmCwAFPlcH9JZIEPOWmegUp5p/UK1PzKNCuYUUlKoDguI1p9HXz+LBVLloMLq/H/0fwemeQISHVRgTiElhepjAabIl6He57JAkhxQWJj/jz01Wv1fWXBQTf8xkPEIFoMFlFKP7kYd8fNL5YDCglLs2H8H6PLsIADT4vyMR7BAFqgmRa56oeCJLJAlh60zQPu1D217YLPQYh8cVLxUWtcn5bJArS15PNgtlct/QsRD1z4w6872QRbgzyA1H8KbxwL6i1xPdRSAQjn9uJQOzOg2YkLNuzb4sWsf2TWxT3et0sokAAtUQJH7ih8nsUCenGn97b3vOUOH9tuBXRd7lyVmzg5ra672g34thQXy5KhZA2TtPZWg3aHrHth1sfcovlkOQc0H78YGA2CBSimyfi2FBfLkGqOGCCy0Qax8x774I7sm9n42gYV1kAXiLpFmgUq6M9UYbFbKtYmzQKYcMWqIlMVW53b/llt/dk3skfuBkgxdtwQW3pAACwzCmNWS1VnqsD5Esz2lcuD5oYaPT5BK0FZY/27a+2MFWF4Nqkx1mQUNsIC03PLDV6dRkfUXOeAsUCanrb9RC6T2LgDc+nfTHgPAKPNwi/WaAAsIxa2VIluBLsoCZXJ6sbuhuGBvWu9vwvq3sf8WcBbeG8V2QRYQiitZvWaKbMZ5GAuUyennh1osAIvdQK1QJ6y/VT5tPoHaKqyDgyEaGI8sAL8IU2QwkgOprlI5MwZorSdKOA/WbZ6fD8/Pj+xR675nn9pLN1W9Umf8DVQTYoEzn+SS/nzdj4pc2UGu1wYUyimrb1j/b/BRKEZ7enp4ejr85+letUW7MwtgJ3d2VGRvpscHQKGcXuxuWGx1vnSt0u7M/fdJkU9XeyRjE2ClcqQzM0EmCzTN4gBcuPtSCUveS8V2052uESyUo8Z6ApcNlgdAuy+YInt/y1I5OxOkrf99KkHjGaFrr1wZTJF9vl2pnBkLwEXz6U+Svq0NmJQ3pMieya9SOb/1x2OB+wMgrDlT5GFU5Br5HR3XplTO9v3N809jAaHI/ly/f0SXymExAMlc83tjFkAUucIVulTO8f0T5wfuzAIVq6OZAlw33e1R6FI5MxYgKhOUu9rrxizALbmlyFV9CFj2UjmwDkAvfgF+/OewgE+RK8yqi2C3VG7p9QApLDApMrTkdRU0aodDqRwvk1nJWgHFArzuxlDkmFUfASiU4wDYawVUDQ9YK6DLo0/j6961ArpuyJbh16NrBSYWEDU5vVbiOuDWTK1UTtQJOQVszjoAWQ+kr5t1QWddFwTvYfaZ7mPPH9gsICoqpVtTR5VYtFK5z6gTmtiHytljmwW4Ip/qfdIXmFqp3LIl0ro12t1qbBbgilJFlddspXL9WRfEGcpsFbQJpebX1TWg5FOlqDEoXHnOUvwaUe6W9V9j5+FiW/KkVioXqfmHdf/2YhlQAm1Vjw4XT19YXToMsnSCOv8yI6xmfcgGoFDucwbA6YQVz5WuG/ys1XYFW9jlKgRgPywrNwsACv/BsrMGQhkAYwywqNw8AHQGqoHHMwBg8wBLys3bqMo4qb9gAunXMgAO9bCk3EwAVOZJBt/y4bvFAIiK0OXk5m4NfPKEnosoHgKyHmgxufk2QM0/UKKPvxUOAVUPtJDc3VigKxkCwJ25LiF3IwD0v9WAgeBhgaEPrwKDPv1wni+3PAvof7bxs8BgzfAD6227tMPlBnLLsoCegJPHLgCnwASX2erT9QZyC7KAcoHA/5a5AFTJwW3Vn28gtyALtOrx69NA8MUC9TAEUtrWuoAbyC3IAi1ggRaNBdiKr9Qvcr2B3IIsAEqy1bGHBqvqkqbMlWnNS+UWMoLEVn7xnwQeAPapylyb1rxUbiEAqKpFMtwhLwCJymxZ81K5RWOBzh4IHgD0ohdXeUPWvFRu0VhAV5PisYAod/Dm9+uQNS+VWzAhQg13qENiAaGkXmWuQ9a8VG51GSG48itY8mBZ81K5T4gFwhkhufDl4vstqxALFMotygJOUIwAwJTZl++vQixQKLcQCwQfvLtzA9eqNxa/yFYHWaBMbg3bzk1cVN7KzzrMAkVyKwWAzeBORXDoF7neQm51AIA1wGfnCRFVmAVK5NYGgGGtVemDj9FNa14qt2IAWIB7PVmPSakxa14qtzoALJfl3JsFcBVmzUvl1qcBxu82sAdWVX5lNq15qdy6ARBrgQ3frsYyQoVyawPAzd7YNUCV15qXyq0PANuFEY8+hCnv2mfNS+VWD8CBV4L2J7AYovZZ81K51QHgZnNq+cS32lZmw5qXyq0NAN9zoereLoYTv+UArHmp3J8AwKGu5OPJdc6Xj+zR558ttzoAvLn8uhIVmUNlZHvG12bLrQ0ALJVdyYfSwrw/y/7MlftzAKinB+FqWqtGKz9XbnUA4BNaVSXKmXW2px7P58qtDYDgfE4tn+ZcA39/ptwfBQCjNbFIpVaPTbzOlFsbANp6+2d1hWszZXsqZc1L5dYGgGG8fOuApWtzGfjCGGXNS+XWDAD2ZSbXRiyXlNa8VG5tAPhdmcp5YK5YpFJVkzUvlVsbALgVr03XRi5IqaU1L5VbGwChkgaj7qOGz/Yvl1sdAOG6ngosh1SuDbfmpXJrAyChwLGasjvMtRFW/VIs9ycC4Al0r8VyawMgb9mjDnRL5dYHQO7Kv1oEuqVya54X+L/cNgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYANgA2ADYA/oe2/wIOLytER3X0nQAAAABJRU5ErkJggg==" alt="" style="display:none" />
	<img id="drawed"><br>
<footer>Image and model are copyright <a href="https://www.mojang.com">Mojang Studios</a></footer>
              
            
!

CSS

              
                
		body {
			background-color: white;
		}

		#background {
			background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAAAAABX3VL4AAAADklEQVQIHWPYXc9QvxsAB2ICdaBJUyUAAAAASUVORK5CYII=);
			background-size: 12px 12px;
			image-rendering: pixelated;
			-ms-interpolation-mode: nearest-neighbor;
			display: inline-block;
      line-height: 0px;
		}

#myCanvas {
  cursor: all-scroll;
}
              
            
!

JS

              
                var main_object;
var models;
var objcamera;
var controls;

var positions = [];
var posPointer = 0;
var neck = [];

$(function () {

	const mag = 1.0

	const width = Math.floor(500 * mag);
	const height = Math.floor(500 * mag);

	const Zoom = 0.0795;

	const night = false;

	// initialize renderer -------------------------------------------------------------------------
	const renderer = new THREE.WebGLRenderer({
		canvas: document.querySelector('#myCanvas'),
		antialias: false,
		alpha: true,
		preserveDrawingBuffer: true
	});
	renderer.setClearColor(0xFF00FF, 0);
	renderer.setPixelRatio(window.devicePixelRatio);
	renderer.setSize(width, height);

	$("#execute").on("click", function () {
		let img = document.querySelector("#drawed");
		img.src = renderer.domElement.toDataURL('image/png');
	});

	$("#export").on("click", function () {
    
    $("#obj_file,#mtl_file").remove();
		
		let filename = "dragon.png";//$("#texture").attr("src").match(".+/(.+?)([\?#;].*)?$")[1]
		let name = filename.match(/(.*)(?:\.([^.]+$))/)[1]

		var exporter = new THREE.OBJExporter();
		let result = "mtllib " + name + ".mtl" + "\n" + exporter.parse(scene);
		var data = "application/x-msdownload;charset=utf-8," + encodeURIComponent(result);
		$('<a id="obj_file" href="data:' + data + '" download="' + name + '.obj">' + name + '.obj</a>').css("margin-right", "8px").appendTo('body');

		let material_setting = exporter.generate_mtl();
		data = "application/x-msdownload;charset=utf-8," + encodeURIComponent(material_setting);
		$('<a id="mtl_file" href="data:' + data + '" download="' + name + '.mtl">' + name + '.mtl</a>').appendTo('body');

	});
  
	$("#reset").on("click", function(){
		controls.reset();
	});

	let pos_x = 0, pos_y = -5.5, pos_z = 40;

	for (let i = 0; i < 64; i++) {
		positions.push([0, 0, 0])
	}

	// initilaize scene
	const scene = new THREE.Scene();


	let loader = new BBModelLoader({
		filename: json_url,
		texture_name: ["#texture"],
		side: THREE.DoubleSide,
	}).loadEntity(function (object, parts) {
		main_object = object;
		models = parts;
		main_object.position.set(pos_x, pos_y, pos_z);
		main_object.rotation.set(0, 0, 0);
		scene.add(main_object);
    
    loader.materials[0].map.name = "dragon.png";

		neck.push(
			models.neck5,
			models.neck4,
			models.neck3,
			models.neck2,
			models.neck,
			models.head,
			models.body,
			models.tail,
			models.tail2,
			models.tail3,
			models.tail4,
			models.tail5,
			models.tail6,
			models.tail7,
			models.tail8,
			models.tail9,
			models.tail10,
			models.tail11,
			models.tail12,
		)

		for(let i=1; i<5; i++){
			neck[i].position.z = neck[0].position.z;
		}

		for(let i=8; i<12; i++){
			neck[i].position.z = neck[7].position.z;
		}

		Render(scene);
	});

	function Render(scene) {

		// initilalize camera
		var viewSize = 16;

		var aspectRatio = width / height;
		const camera = new THREE.OrthographicCamera(
			-aspectRatio * viewSize / 2,
			aspectRatio * viewSize / 2,
			viewSize / 2,
			-viewSize / 2,
			-1000,
			1000
		);

		camera.position.set(viewSize, viewSize * Math.tan(deg2rad(39.23)), viewSize); // Isometric position
		camera.lookAt(scene.position);

		camera.zoom = Zoom;
		camera.updateProjectionMatrix();

		controls = new THREE.OrbitControls(camera, renderer.domElement);
		controls.enableKeys = false;

		objcamera = camera;

		// Lighting -------------------------------------------------------------------------------------

		const dirLight = new THREE.DirectionalLight(night ? 0x9999cc : 0xFFFFFF);
		//dirLight.intensity = 0.435;
		dirLight.intensity = 0.68;
		dirLight.position.set(1.2, 4.85, 3.5).normalize();
		dirLight.castShadow = true;
		dirLight.shadow.mapSize.width = 2048;
		dirLight.shadow.mapSize.height = 2048;
		var d = 50;
		dirLight.shadow.camera.left = -d;
		dirLight.shadow.camera.right = d;
		dirLight.shadow.camera.top = d;
		dirLight.shadow.camera.bottom = -d;
		dirLight.shadow.camera.far = 3500;
		dirLight.shadow.bias = -0.0001;
		scene.add(dirLight);
		var ambientLight = new THREE.AmbientLight(night ? 0x333333 : 0xFCFCFF);
		ambientLight.intensity = 0.45;
		scene.add(ambientLight);

		// Animate setting ------------------------------------------------------------------------------
		timeline = new TimeLineControl()

		timeline.addEvent({
			start: 0,
			interval: 4,
      reverse: true,
			process: dragon,
		})

		// APNG writer ----------------------------------------------------------------------------------
		var encoder = new APNGencoder(document.querySelector("#myCanvas"));
		encoder.setRepeat(0);
		encoder.setBlend(0);

		$("#create_apng").on("click", function () {

			$("#play").prop("checked", false);

			let img = document.querySelector("#drawed")
			img.src = ""

			anim_capture = {}
			anim_capture.delay = 0.01
			anim_capture.max = Math.floor(1 / anim_capture.delay)
			anim_capture.lifetime = 0
			anim_capture.count = 0
			timeline.process(0.001)
			//renderer.compile(scene, camera);

			encoder.setDelay(4);
			encoder.start();

			anim_capture.timer = setTimeout(create_frame, 100)

		});

		function create_frame() {

			clearTimeout(anim_capture.timer)

			if (anim_capture.count < anim_capture.max) {
				anim_capture.count++;

				anim_capture.lifetime = anim_capture.lifetime + anim_capture.delay < 1 ? anim_capture.lifetime + anim_capture.delay : 0
				timeline.process(anim_capture.lifetime)
				encoder.addFrame();

				console.log(anim_capture.lifetime)
				anim_capture.timer = setTimeout(create_frame, 100 + anim_capture.count * 1.5)

			} else {

				anim_capture = undefined
				encoder.finish();

				var base64Out = bytesToBase64(encoder.stream().bin);
				let apng = document.querySelector("#drawed");
				apng.src = "data:image/png;base64," + base64Out;
			}
		}

		// Run tick -------------------------------------------------------------------------------------

		let lifetime = 0
		let begin_sec = new Date().getTime();

		$("#animate").on("click", function () {

			lifetime = lifetime + 0.0025 < 1 ? lifetime + 0.0025 : 0
			timeline.process(lifetime)
		});

		tick();

		function tick() {

			if($("#play").prop("checked")){
				timeline.process(lifetime);
				let now = (new Date().getTime() - begin_sec) * 0.001;
				let tick = (now % timeline.total) / timeline.total;
				lifetime = tick; //lifetime + capture_setting.preview_speed < 1 ? lifetime + capture_setting.preview_speed : 0
			}

			$("#camera_stats").html(
				"position:(" + objcamera.position.x + ", " + objcamera.position.y + ", " + objcamera.position.y + ")<br>" +
				"rotation:(" + objcamera.rotation.x + ", " + objcamera.rotation.y + ", " + objcamera.rotation.z + ")<br>" +
				"zoom:" + objcamera.zoom
			);

			// Rendering
			renderer.render(scene, camera);
			requestAnimationFrame(tick);
		}

    // From EnderDragonRenderer.java -------------------------------------------------------
		function dragon(tick) {
			let distance = 0.1
			let oFlapTime = 0, flapTime = 0.2 / (distance * 1.0);
			let f1 = lerp(1-tick, oFlapTime, flapTime);
			let f1b = lerp(tick, oFlapTime, flapTime);
			models.jaw.rotation.x = (Math.sin((f1 * 6.2831855)) + 1.0) * 0.2;

			let f2 = (Math.sin((f1b * 6.2831855 - 1.0)) + 1.0);
			f2 = (f2 * f2 + f2 * 2.0) * 0.05;

			let f3 = 0.0;
			let f4 = -4.0;
			let f5 = models.neck5.position.z;

			let f6 = 1.5;

			//// neck --------------------------
			let arrayOfDouble1 = getLatencyPos(6, tick);

			let f7 = rotWrap(getLatencyPos(5, tick)[0] - getLatencyPos(10, tick)[0]);
			let f8 = rotWrap(getLatencyPos(5, tick)[0] + (f7 / 2.0));

			let f9 = f1 * 6.2831855;
			for (let b1 = 0; b1 < 5; b1++) {
				let arrayOfDouble = getLatencyPos(5 - b1, tick);
				let f = Math.cos((b1 * 0.45 + f9)) * 0.15;

				neck[b1].rotation.y = rotWrap(arrayOfDouble[0] - arrayOfDouble1[0]) * 0.017453292 * 1.5;
				neck[b1].rotation.x = (f + getHeadPartYOffset(b1, arrayOfDouble1, arrayOfDouble) * 0.017453292 * 1.5 * 5.0);
				neck[b1].rotation.z = rotWrap(arrayOfDouble[0] - f8) * 0.017453292 * 1.5;

				neck[b1].position.y = -f4;
				neck[b1].position.z = f5;
				neck[b1].userData.x = f3;
				f4 = f4 + Math.sin(neck[b1].rotation.x) * 10.0;
				f5 = f5 + Math.cos(neck[b1].rotation.y) * Math.cos(neck[b1].rotation.x) * 10;
				f3 = f3 - Math.sin(neck[b1].rotation.y) * Math.cos(neck[b1].rotation.x) * 10;
			}
			
			/// head & body --------------------------
			models.head.position.y = -f4;
			models.head.position.z = f5;
			//this.head.x = f3;
			let arrayOfDouble2 = getLatencyPos(0, tick);
			models.head.rotation.y = rotWrap(arrayOfDouble2[0] - arrayOfDouble1[0]) * 0.017453292;
			models.head.rotation.x = rotWrap(getHeadPartYOffset(6, arrayOfDouble1, arrayOfDouble2)) * 0.017453292 * 1.5 * 5.0;
			models.head.rotation.z = -rotWrap(arrayOfDouble2[0] - f8) * 0.017453292;
			
			f4 = Math.sin(neck[1].rotation.x) * 16;
			models.dragon.position.y = f4
			models.body.rotation.z = 0.0;

			/// wings --------------------------
			let f10 = f1b * 6.2831855;
			models.leftWing.rotation.x = 0.125 - Math.cos(f10) * 0.2;
			models.leftWing.rotation.y = -0.25;
			models.leftWing.rotation.z = (Math.sin(f10) + 0.125) * 0.8;
			models.leftWingTip.rotation.z = (Math.sin(f10 + 2.0) + 0.5) * 0.75;

			models.rightWing.rotation.x = models.leftWing.rotation.x;
			models.rightWing.rotation.y = -models.leftWing.rotation.y;
			models.rightWing.rotation.z = -models.leftWing.rotation.z + deg2rad(180);
			models.rightWingTip.rotation.z = -models.leftWingTip.rotation.z;

			/// legs --------------------------
			renderSide(f2, models.leftFrontLeg, models.leftFrontLegTip, models.leftFrontFoot, models.leftRearLeg, models.leftRearLegTip, models.leftRearFoot)
			renderSide(f2, models.rightFrontLeg, models.rightFrontLegTip, models.rightFrontFoot, models.rightRearLeg, models.rightRearLegTip, models.rightRearFoot)

			
			/// tail -------------------------
			let f11 = -Math.sin(f1 * 6.2831855) * 0.0;
			f9 = f1 * 6.2831855;
			f4 = models.tail.position.y;
			f5 = models.tail.position.z;
			f3 = 0.0;
			arrayOfDouble1 = getLatencyPos(11, tick);
			for (let b2 = 0; b2 < 12; b2++) {
				arrayOfDouble2 = getLatencyPos(12 + b2, tick);
				f11 = (f11 + Math.sin((b2 * 0.45 + f9)) * 0.05000000074505806);
				neck[7 + b2].rotation.y = (rotWrap(arrayOfDouble2[0] - arrayOfDouble1[0]) * 1.5 + 180.0) * 0.017453292;
				neck[7 + b2].rotation.x = (f11 + (arrayOfDouble2[1] - arrayOfDouble1[1]) * 0.017453292 * 1.5 * 5.0);
				neck[7 + b2].rotation.z = rotWrap(arrayOfDouble2[0] - f8) * 0.017453292 * 1.5;
				neck[7 + b2].position.y = f4;
				neck[7 + b2].position.z = f5;
				//this.neck.x = f3;
				f4 = (f4 + Math.sin(neck[7 + b2].rotation.x) * 10.0);
				f5 = (f5 + Math.cos(neck[7 + b2].rotation.y) * Math.cos(neck[7 + b2].rotation.x) * 10);
				f3 = (f3 - Math.sin(neck[7 + b2].rotation.y) * Math.cos(neck[7 + b2].rotation.x) * 10);
			}

		}

		function renderSide(param1Float, paramFrontLeg, paramFrontLegTip, paramFrontFoot, paramRearLeg, paramRearLegTip, paramRearFoot) {
			paramRearLeg.rotation.x = 1.0 + param1Float * 0.1;
			paramRearLegTip.rotation.x = 0.5 + param1Float * 0.1;
			paramRearFoot.rotation.x = 0.75 + param1Float * 0.1;

			paramFrontLeg.rotation.x = 1.3 + param1Float * 0.1;
			paramFrontLegTip.rotation.x = -0.5 - param1Float * 0.1;
			paramFrontFoot.rotation.x = 0.75 + param1Float * 0.1;
		}

		function getLatencyPos(index, tick) {
			tick = tick;
			let i = posPointer - index & 0x3F;
			let j = posPointer - (index - 1) & 0x3F;
			let arrayOfDouble = new Array(3);
			let d1 = positions[i][0];
			let d2 = wrapDegrees(positions[j][0] - d1);
			arrayOfDouble[0] = d1 + d2 * tick;
			d1 = positions[i][1];
			d2 = positions[j][1] - d1;
			arrayOfDouble[1] = d1 + d2 * tick;
			arrayOfDouble[2] = lerp(tick, positions[i][2], positions[j][2]);
			return arrayOfDouble;
		}


		function getHeadPartYOffset(index, paramArrayOfdouble1, paramArrayOfdouble2) {
			let d;
			if (index == 6) {
				d = 0.0
			} else {
				d = paramArrayOfdouble2[1] - paramArrayOfdouble1[1];
			}
			return d;
		}

	}
});

function rotWrap(paramDouble) {
	while (paramDouble >= 180.0)
		paramDouble -= 360.0;
	while (paramDouble < -180.0)
		paramDouble += 360.0;
	return paramDouble;
}

function wrapDegrees(paramDouble) {
	let d = paramDouble % 360.0;
	if (d >= 180.0)
		d -= 360.0;
	if (d < -180.0)
		d += 360.0;
	return d;
}


var json_url = "data:application/json;base64,eyJtZXRhIjp7ImZvcm1hdF92ZXJzaW9uIjoiMy4wIiwibW9kZWxfZm9ybWF0IjoiYmVkcm9jayIsImJveF91diI6dHJ1ZX0sIm5hbWUiOiJlbmRlcl9kcmFnb24iLCJnZW9fbmFtZSI6Imdlb21ldHJ5LmRyYWdvbiIsInJlc29sdXRpb24iOnsid2lkdGgiOjI1NiwiaGVpZ2h0IjoyNTZ9LCJlbGVtZW50cyI6W3sibmFtZSI6InVwcGVybGlwIiwiZnJvbSI6Wy02LC0xLC04OF0sInRvIjpbNiw0LC03Ml0sImF1dG91diI6MCwiY29sb3IiOjAsIm9yaWdpbiI6WzAsLTIxLC02NF0sInV2X29mZnNldCI6WzE3Niw0NF0sInV1aWQiOiIyMWVjNWJjOS0yYTNjLWZiM2MtMjY5MS03NzU3MTgwODE4MjcifSx7Im5hbWUiOiJ1cHBlcmhlYWQiLCJmcm9tIjpbLTgsLTUsLTc0XSwidG8iOls4LDExLC01OF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsMywtNjZdLCJ1dl9vZmZzZXQiOlsxMTIsMzBdLCJ1dWlkIjoiYWFmZGVlODctMzUxMC1hMzVkLTMwOWEtMjM5OTlmMTYzZDU0In0seyJuYW1lIjoic2NhbGVMIiwiZnJvbSI6WzMsMTEsLTY4XSwidG8iOls1LDE1LC02Ml0sImF1dG91diI6MCwiY29sb3IiOjUsIm9yaWdpbiI6WzAsLTIxLC02NF0sInV1aWQiOiI4YzE0YzMxOC1iMTljLTc5YzItNzVjNy0wMDEyOTYwNThhMzcifSx7Im5hbWUiOiJub3N0cmlsTCIsImZyb20iOlszLDQsLTg2XSwidG8iOls1LDYsLTgyXSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbMCwtMjEsLTY0XSwidXZfb2Zmc2V0IjpbMTEyLDBdLCJ1dWlkIjoiMjU3MjVmYzctOGM0YS1jODFiLTI3NjQtNGZmYjMxOGQ0NDM5In0seyJuYW1lIjoic2NhbGVSIiwiZnJvbSI6Wy01LDExLC02OF0sInRvIjpbLTMsMTUsLTYyXSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbMCwtMjEsLTY0XSwidXVpZCI6IjE1ZWIzZjc1LWY0M2EtNzc3Mi0zZjBmLTg0ZTdmMDc5YzQzMiJ9LHsibmFtZSI6Im5vc3RyaWxSIiwiZnJvbSI6Wy01LDQsLTg2XSwidG8iOlstMyw2LC04Ml0sImF1dG91diI6MCwiY29sb3IiOjAsIm9yaWdpbiI6WzAsLTIxLC02NF0sInV2X29mZnNldCI6WzExMiwwXSwidXVpZCI6IjRlNTAxNDJhLWY3MzctOTNkNi0yYmQ3LTVjMjNlY2Q3MDI4NCJ9LHsibmFtZSI6ImphdyIsImZyb20iOlstNiwtNSwtODhdLCJ0byI6WzYsLTEsLTcyXSwiYXV0b3V2IjowLCJjb2xvciI6Niwib3JpZ2luIjpbMCwtMjEsLTY0XSwidXZfb2Zmc2V0IjpbMTc2LDY1XSwidXVpZCI6IjRmZTJlNTk1LTBmNjYtZjZmYi04MTU2LTg0NjI5ZTM0MTJiYSJ9LHsibmFtZSI6ImJveCIsImZyb20iOlstNSwtMiwtNThdLCJ0byI6WzUsOCwtNDhdLCJhdXRvdXYiOjAsImNvbG9yIjozLCJvcmlnaW4iOlswLC0yMSwtNTNdLCJ1dl9vZmZzZXQiOlsxOTIsMTA0XSwidXVpZCI6ImIyZDNmY2E3LTU1NTAtM2FjNy1mNmFhLTRkNjI0MjNlMmQyMSJ9LHsibmFtZSI6InNjYWxlIiwiZnJvbSI6Wy0xLDgsLTU2XSwidG8iOlsxLDEyLC01MF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTIxLC01M10sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiYjcxZTNmMjYtY2YyMS0xZmY4LWJiOTAtNTYzNjI4ZjJiMTQyIn0seyJuYW1lIjoiYm9keSIsImZyb20iOlstMTIsLTQsLThdLCJ0byI6WzEyLDIwLDU2XSwiYXV0b3V2IjowLCJjb2xvciI6Niwib3JpZ2luIjpbMCw4LDI0XSwidXVpZCI6ImNmZmUyZDBlLWEwM2EtZDNhZS1kNzI3LTA2ZWE5NDllMWQyZSJ9LHsibmFtZSI6InNjYWxlMiIsImZyb20iOlstMSwyMCwtMl0sInRvIjpbMSwyNiwxMF0sImF1dG91diI6MCwiY29sb3IiOjYsIm9yaWdpbiI6WzAsMCwwXSwidXZfb2Zmc2V0IjpbMjIwLDUzXSwidXVpZCI6ImI0YzFjNzkzLWM0NjYtYzQwYy05ZWJlLWYyNWYxNmMyYzU3MCJ9LHsibmFtZSI6InNjYWxlMyIsImZyb20iOlstMSwyMCwxOF0sInRvIjpbMSwyNiwzMF0sImF1dG91diI6MCwiY29sb3IiOjEsIm9yaWdpbiI6WzAsMCwwXSwidXZfb2Zmc2V0IjpbMjIwLDUzXSwidXVpZCI6IjU0ZGM3Y2FhLTQyNTktMzUwYy1mNDc5LWY3ODE2YTNkODNiOSJ9LHsibmFtZSI6InNjYWxlNCIsImZyb20iOlstMSwyMCwzOF0sInRvIjpbMSwyNiw1MF0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsMCwwXSwidXZfb2Zmc2V0IjpbMjIwLDUzXSwidXVpZCI6Ijc2OTYyYmMxLWRkYmYtMjU2ZS01ZDk5LWQzZDI4NmQwNGJlMyJ9LHsibmFtZSI6ImJvbmUiLCJmcm9tIjpbMTIsMTUsLTJdLCJ0byI6WzY4LDIzLDZdLCJhdXRvdXYiOjAsImNvbG9yIjoxLCJvcmlnaW4iOlsxMiwxOSwyXSwidXZfb2Zmc2V0IjpbMTEyLDg4XSwidXVpZCI6Ijk0MDVmMDllLTc1ZDYtMWRmOS1lN2E1LTU2Y2E1MWU4MWY4OCJ9LHsibmFtZSI6InNraW4iLCJmcm9tIjpbMTIsMTksNF0sInRvIjpbNjgsMTksNjBdLCJhdXRvdXYiOjAsImNvbG9yIjoxLCJvcmlnaW4iOlszOCwxOSwwXSwidXZfb2Zmc2V0IjpbLTU2LDg4XSwidXVpZCI6Ijk0YmFlMjdkLTllNjYtZGM0ZC1kMjVlLWQ3MzFmN2IxNTk4YiJ9LHsibmFtZSI6ImJvbmUyIiwiZnJvbSI6WzY4LDE3LDBdLCJ0byI6WzEyNCwyMSw0XSwiYXV0b3V2IjowLCJjb2xvciI6MCwib3JpZ2luIjpbNjgsMTksMl0sInV2X29mZnNldCI6WzExMiwxMzZdLCJ1dWlkIjoiYTZlNzc0MDMtNDZkYS05OTdlLWYxZWYtOTMyOTg5NzUzOWQ5In0seyJuYW1lIjoic2tpbjIiLCJmcm9tIjpbNjgsMTksMl0sInRvIjpbMTI0LDE5LDU4XSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbOTQsMTksMF0sInV2X29mZnNldCI6Wy01NiwxNDRdLCJ1dWlkIjoiNDhhNGU4MjQtZmI2NC01OGQyLTljNzEtYTI0YzY1ODE2YzQwIn0seyJuYW1lIjoiYm9uZTMiLCJmcm9tIjpbLTEyLDE1LC0yXSwidG8iOls0NCwyMyw2XSwiYXV0b3V2IjowLCJjb2xvciI6Miwib3JpZ2luIjpbLTEyLDE4Ljk5OTk5OTk5OTk5OTk5NiwyXSwidXZfb2Zmc2V0IjpbMTEyLDg4XSwidXVpZCI6ImFmZDBkNTk5LTRmMWEtZjYwNy04ZDZmLTgyYjQxN2ZjNTAzNCJ9LHsibmFtZSI6InNraW4zIiwiZnJvbSI6Wy0xMiwxOSw0XSwidG8iOls0NCwxOSw2MF0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzIxLDE4Ljk5OTk5OTk5OTk5OTk5NiwzXSwidXZfb2Zmc2V0IjpbLTU2LDg4XSwidXVpZCI6IjIxYmZmMmUxLTE5MjctMjAzOS1jZTlmLTMzZmVhMDE5ZDcyYiJ9LHsibmFtZSI6ImJvbmU0IiwiZnJvbSI6WzQ0LDE3LDBdLCJ0byI6WzEwMCwyMSw0XSwiYXV0b3V2IjowLCJjb2xvciI6Miwib3JpZ2luIjpbNDQsMTkuMDAwMDAwMDAwMDAwMDA3LDJdLCJ1dl9vZmZzZXQiOlsxMTIsMTM2XSwidXVpZCI6IjBmYjA0NTg0LTYyZTItNGQ5OS00YzQ3LWI1ZmI4MDE4MjExNCJ9LHsibmFtZSI6InNraW40IiwiZnJvbSI6WzQ0LDE5LDJdLCJ0byI6WzEwMCwxOSw1OF0sImF1dG91diI6MCwiY29sb3IiOjQsIm9yaWdpbiI6WzU5LDE5LDJdLCJ1dl9vZmZzZXQiOlstNTYsMTQ0XSwidXVpZCI6IjdhMjE0OWFiLWIzMDUtZWU0NC0xNjBhLWQ0NDFiMGVjMzg0OSJ9LHsibmFtZSI6InJlYXJsZWciLCJmcm9tIjpbOCwtMjIsMzRdLCJ0byI6WzI0LDEwLDUwXSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbMTYsLTQsNDJdLCJ1dWlkIjoiZmQyNDhlMWQtOGYwMC0wMTFhLTQyYTctMWJiNmYxMzY3NWRjIn0seyJuYW1lIjoicmVhcmxlZzEiLCJmcm9tIjpbLTI1LC0yMiwzNF0sInRvIjpbLTksMTAsNTBdLCJhdXRvdXYiOjAsImNvbG9yIjozLCJvcmlnaW4iOlstMTcsLTYsNDJdLCJ1dWlkIjoiZjBjZWEyZWQtNTM5Ni0wNmQ5LTU0MjUtZjAyYTA3MjY0M2M3In0seyJuYW1lIjoiZnJvbnRsZWciLCJmcm9tIjpbOSwtMTYsLTJdLCJ0byI6WzE3LDgsNl0sImF1dG91diI6MCwiY29sb3IiOjAsIm9yaWdpbiI6WzEyLDUsM10sInV2X29mZnNldCI6WzExMiwxMDRdLCJ1dWlkIjoiNTMxZGY1ZjgtYzk5Ni04ZmIzLTg3YmUtZjllYjA4YzcwMGJjIn0seyJuYW1lIjoiZnJvbnRsZWcxIiwiZnJvbSI6Wy0xNywtMTYsLTJdLCJ0byI6Wy05LDgsNl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6Wy0xMiwzLDJdLCJ1dl9vZmZzZXQiOlsxMTIsMTA0XSwidXVpZCI6ImYyYzA2MDM1LTFkNjAtY2UzNC1lNGIzLTY3N2JkNTJkYzgzZCJ9LHsibmFtZSI6InJlYXJsZWd0aXAiLCJmcm9tIjpbMTAsLTU0LDM2XSwidG8iOlsyMiwtMjIsNDhdLCJhdXRvdXYiOjAsImNvbG9yIjo0LCJvcmlnaW4iOlsxNiwtMzgsNDJdLCJ1dl9vZmZzZXQiOlsxOTYsMF0sInV1aWQiOiI2ODg1ZmFjMC1jZDYzLWY3N2YtNTNiNi0xYTExM2YzZTljOTMifSx7Im5hbWUiOiJyZWFybGVndGlwMSIsImZyb20iOlstMjMsLTU0LDM2XSwidG8iOlstMTEsLTIyLDQ4XSwiYXV0b3V2IjowLCJjb2xvciI6MSwib3JpZ2luIjpbLTE2LC0zOCw0Ml0sInV2X29mZnNldCI6WzE5NiwwXSwidXVpZCI6ImI3MjA0YWI5LTFkYTQtMjZhYS0yZWM0LWY5NTQwZTIxOWFmMyJ9LHsibmFtZSI6ImZyb250bGVndGlwIiwiZnJvbSI6WzEwLC00MCwtMV0sInRvIjpbMTYsLTE2LDVdLCJhdXRvdXYiOjAsImNvbG9yIjoxLCJvcmlnaW4iOlsxMiwtMTYsMl0sInV2X29mZnNldCI6WzIyNiwxMzhdLCJ1dWlkIjoiNzk4NTY0YmMtODJjZC1mYjUyLTBhMGItNTEyNjZlY2Q3ZDAwIn0seyJuYW1lIjoiZnJvbnRsZWd0aXAxIiwiZnJvbSI6Wy0xNiwtNDAsLTFdLCJ0byI6Wy0xMCwtMTYsNV0sImF1dG91diI6MCwiY29sb3IiOjAsIm9yaWdpbiI6Wy0xNCwtMSwwXSwidXZfb2Zmc2V0IjpbMjI2LDEzOF0sInV1aWQiOiIwMzg3YTY2My1lNDMxLTgxNjYtYTAwYy1kZTQwODE3NDY1MjMifSx7Im5hbWUiOiJyZWFyZm9vdCIsImZyb20iOls3LC02MCwyN10sInRvIjpbMjUsLTU0LDUxXSwiYXV0b3V2IjowLCJjb2xvciI6NSwib3JpZ2luIjpbMTYsLTU3LDM5XSwidXZfb2Zmc2V0IjpbMTEyLDBdLCJ1dWlkIjoiODAyMDIxYjMtZmYxMy1iZmIzLTJjOTktOGZkYmY4OTk1NGU2In0seyJuYW1lIjoicmVhcmZvb3QxIiwiZnJvbSI6Wy0yNiwtNjAsMjZdLCJ0byI6Wy04LC01NCw1MF0sImF1dG91diI6MCwiY29sb3IiOjQsIm9yaWdpbiI6Wy0xNiwtNTcsMzhdLCJ1dl9vZmZzZXQiOlsxMTIsMF0sInV1aWQiOiI0OTgyNTIwNS0wN2JkLTBlMzMtMDU0ZS1mMGFmYzRiN2UxNmEifSx7Im5hbWUiOiJmcm9udGZvb3QiLCJmcm9tIjpbOSwtNDQsLTEwXSwidG8iOlsxNywtNDAsNl0sImF1dG91diI6MCwiY29sb3IiOjUsIm9yaWdpbiI6WzEyLC00MCwtMl0sInV2X29mZnNldCI6WzE0NCwxMDRdLCJ1dWlkIjoiMDAyYWU2OTUtZDVjMy1lNjExLTY2ZmMtNTg1MzUxOTk4YjllIn0seyJuYW1lIjoiZnJvbnRmb290MSIsImZyb20iOlstMTcsLTQ0LC0xMF0sInRvIjpbLTksLTQwLDZdLCJhdXRvdXYiOjAsImNvbG9yIjoyLCJvcmlnaW4iOlstMTQsLTQwLDBdLCJ1dl9vZmZzZXQiOlsxNDQsMTA0XSwidXVpZCI6ImUxZjA5MzMzLTI0MjQtN2ZkZS02MThlLTgyZTVkN2JhMjc5NyJ9LHsibmFtZSI6ImJveCIsImZyb20iOlstNSwtMiwtNDhdLCJ0byI6WzUsOCwtMzhdLCJhdXRvdXYiOjAsImNvbG9yIjozLCJvcmlnaW4iOlswLC0yMSwtNDNdLCJ1dl9vZmZzZXQiOlsxOTIsMTA0XSwidXVpZCI6ImE0ZGMzMmU2LWJlM2ItNzBlNC02ZmY0LTc0ZTAxYzgzMmZkNSJ9LHsibmFtZSI6InNjYWxlIiwiZnJvbSI6Wy0xLDgsLTQ2XSwidG8iOlsxLDEyLC00MF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTIxLC00M10sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiYWJjZmE0MDYtNGUyMC0wMTdlLTFmNTgtZjRjNzZhZWE3OWY2In0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LC0yLC0zOF0sInRvIjpbNSw4LC0yOF0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTIxLC0zM10sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiNTNlODBhOTMtNjFmNS03ODMyLWQxYjYtNGNjOWIwMmExMzA1In0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsOCwtMzZdLCJ0byI6WzEsMTIsLTMwXSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbMCwtMjEsLTMzXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiI1MTIzZThiMS0zYTQxLTlhNTctODk4ZC1mZmVlNWFhM2MzNDEifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsLTIsLTI4XSwidG8iOls1LDgsLTE4XSwiYXV0b3V2IjowLCJjb2xvciI6Mywib3JpZ2luIjpbMCwtMjEsLTIzXSwidXZfb2Zmc2V0IjpbMTkyLDEwNF0sInV1aWQiOiIzYmQ3MDk0Mi1lYzdmLTVjMzgtZTc3NS1jYTdmNzAyOGY1N2IifSx7Im5hbWUiOiJzY2FsZSIsImZyb20iOlstMSw4LC0yNl0sInRvIjpbMSwxMiwtMjBdLCJhdXRvdXYiOjAsImNvbG9yIjo3LCJvcmlnaW4iOlswLC0yMSwtMjNdLCJ1dl9vZmZzZXQiOls0OCwwXSwidXVpZCI6ImExNGM2MThlLWYzODMtODNhMi1hYjRmLTlmN2YxMzcxNzg0NCJ9LHsibmFtZSI6ImJveCIsImZyb20iOlstNSwtMiwtMThdLCJ0byI6WzUsOCwtOF0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTIxLC0xM10sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiYjY4N2YxMzUtZTNlOS03Yjg1LTE0YjgtNzQ1OWJmZTIyZTgwIn0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsOCwtMTZdLCJ0byI6WzEsMTIsLTEwXSwiYXV0b3V2IjowLCJjb2xvciI6Nywib3JpZ2luIjpbMCwtMjEsLTEzXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiJkN2FiZjVkMS0yNDdkLTM4ZmQtZWVkMS05YzgwYTJjZmZiYzMifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsOSw1Nl0sInRvIjpbNSwxOSw2Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDYxXSwidXZfb2Zmc2V0IjpbMTkyLDEwNF0sInV1aWQiOiI3ZDZhYjgzMy0yYTFkLTAzN2YtMzA4Zi01MjA3N2VmM2M4ZjUifSx7Im5hbWUiOiJzY2FsZSIsImZyb20iOlstMSwxOSw1OF0sInRvIjpbMSwyMyw2NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDYxXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiIyMjlkMTJmNC0xZDc1LTg0Y2YtMGE3Ni0zMDJmYmYzNjY5NzEifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsOSw2Nl0sInRvIjpbNSwxOSw3Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDcxXSwidXZfb2Zmc2V0IjpbMTkyLDEwNF0sInV1aWQiOiJjM2I0Y2JlYS04OGUzLTdjMWUtZjM1OC03MzY2YTQwY2M5NjgifSx7Im5hbWUiOiJzY2FsZSIsImZyb20iOlstMSwxOSw2OF0sInRvIjpbMSwyMyw3NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDcxXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiI1NTkxOGQ2Ny05NmMwLTI1ODItMzYzNi1kZmJkOWI5ZmNkNjQifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsOSw3Nl0sInRvIjpbNSwxOSw4Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDgxXSwidXZfb2Zmc2V0IjpbMTkyLDEwNF0sInV1aWQiOiJlMGY2N2UyMS1iOTZjLTNmZWUtOGE1NC1jMGI4MTY0MWMwMDEifSx7Im5hbWUiOiJzY2FsZSIsImZyb20iOlstMSwxOSw3OF0sInRvIjpbMSwyMyw4NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDgxXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiI2YWYwZDU0Ni05YmEyLWI0OTAtM2VmNS02ZmY2MTQ0YjcwZWYifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsOSw4Nl0sInRvIjpbNSwxOSw5Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDkxXSwidXZfb2Zmc2V0IjpbMTkyLDEwNF0sInV1aWQiOiI5OTNmYjI3Ny0yZDEzLWNjM2EtM2Y5OC05OGEwZTJmZGQ2Y2EifSx7Im5hbWUiOiJzY2FsZSIsImZyb20iOlstMSwxOSw4OF0sInRvIjpbMSwyMyw5NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDkxXSwidXZfb2Zmc2V0IjpbNDgsMF0sInV1aWQiOiI5YTAwZjRlZS02YzFhLTdhNDctNzI2MS1lMTRjNWY4ODBiNTYifSx7Im5hbWUiOiJib3giLCJmcm9tIjpbLTUsOSw5Nl0sInRvIjpbNSwxOSwxMDZdLCJhdXRvdXYiOjAsImNvbG9yIjozLCJvcmlnaW4iOlswLC0xMCwxMDFdLCJ1dl9vZmZzZXQiOlsxOTIsMTA0XSwidXVpZCI6Ijc0MDRhOWQ2LWEwZGMtZDNjZC1jYzJiLWZmYzQwMDA3N2U2NSJ9LHsibmFtZSI6InNjYWxlIiwiZnJvbSI6Wy0xLDE5LDk4XSwidG8iOlsxLDIzLDEwNF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDEwMV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiMmNlNmY2OTItODlmMS1lYzU5LTRkNDgtMTFkN2M1ZDIwMjI3In0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTA2XSwidG8iOls1LDE5LDExNl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDExMV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiZTlhNzkzOTktZTY4Yy1kZjZiLWUzZWMtNjMxNjNiYWQyM2Q5In0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTA4XSwidG8iOlsxLDIzLDExNF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDExMV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiMzJhODE1MDAtNjRjZi01OTJjLTZhNDctYTU0NzJlYzRiNWY3In0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTE2XSwidG8iOls1LDE5LDEyNl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDEyMV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiZWMzYWM0ZWItZTc4MC1lYmI3LWY0OTUtZmY4ZGQxODNjYmFjIn0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTE4XSwidG8iOlsxLDIzLDEyNF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDEyMV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiYTk4Mzc3MWUtZjI1NC0zZTA0LWNjNmYtOWMzZTUxMWU4YjliIn0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTI2XSwidG8iOls1LDE5LDEzNl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDEzMV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiMTJhZWJmZTgtMTc1My02NGIyLTEwY2MtNDY5OGEyODUxNmRlIn0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTI4XSwidG8iOlsxLDIzLDEzNF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDEzMV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiOWEyMWI2ODUtNWU2OC1kMGYyLWU0NWMtOGY4ODQ1ZTg1MGZhIn0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTM2XSwidG8iOls1LDE5LDE0Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDE0MV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiZWUwZDk2MTUtYjg2NS05MTNlLWMwZDktZmNkM2I5Y2EwNjA0In0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTM4XSwidG8iOlsxLDIzLDE0NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDE0MV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiM2Y5ZDdjNTYtNGI4Ny1jMzc2LTdiODMtZWJiOGVlMzA1MDliIn0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTQ2XSwidG8iOls1LDE5LDE1Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDE1MV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiZTM2NTMyNmEtMmMxZi1mNzdhLWQ5ZTktMjIyN2Q2MzBjZjgzIn0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTQ4XSwidG8iOlsxLDIzLDE1NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDE1MV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiODk5MzYyMWMtODJlNS1mMjc4LTQzNjItNDI5NmM4ZGJiNzBmIn0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTU2XSwidG8iOls1LDE5LDE2Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDE2MV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiYThlYjk3YzctYzI2NC1kYTVhLTkzYjUtNjY0NWIwYWE2MzgwIn0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTU4XSwidG8iOlsxLDIzLDE2NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDE2MV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiNTQ5YTA1NGMtMzk3ZC1lZmVjLTRiNzItMjM2ZjRhMzhkMDhmIn0seyJuYW1lIjoiYm94IiwiZnJvbSI6Wy01LDksMTY2XSwidG8iOls1LDE5LDE3Nl0sImF1dG91diI6MCwiY29sb3IiOjMsIm9yaWdpbiI6WzAsLTEwLDE3MV0sInV2X29mZnNldCI6WzE5MiwxMDRdLCJ1dWlkIjoiN2U0MGM4MDUtYjk5My04YjljLTZlOTYtODQxNzA1OTNkYWQ1In0seyJuYW1lIjoic2NhbGUiLCJmcm9tIjpbLTEsMTksMTY4XSwidG8iOlsxLDIzLDE3NF0sImF1dG91diI6MCwiY29sb3IiOjcsIm9yaWdpbiI6WzAsLTEwLDE3MV0sInV2X29mZnNldCI6WzQ4LDBdLCJ1dWlkIjoiOGQ2YWI2YWQtZTBkYS1mOGI0LWNlMDMtNDM2ZGI5N2VjYjdlIn1dLCJvdXRsaW5lciI6W3sibmFtZSI6ImRyYWdvbiIsInV1aWQiOiJjNTc3YzU5ZS1mYmY3LTIwNjktMDk2YS1mZGQ4YjA4NGVjNTYiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6dHJ1ZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDAsMF0sImNoaWxkcmVuIjpbeyJuYW1lIjoiaGVhZCIsInNoYWRlIjpmYWxzZSwidXVpZCI6ImZkYTIzMzQ1LTg0MmYtODE1OC1mOThlLWVlYmY5NTI1NTA5OCIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDMsLTY2XSwiY2hpbGRyZW4iOlsiMjFlYzViYzktMmEzYy1mYjNjLTI2OTEtNzc1NzE4MDgxODI3IiwiYWFmZGVlODctMzUxMC1hMzVkLTMwOWEtMjM5OTlmMTYzZDU0IiwiOGMxNGMzMTgtYjE5Yy03OWMyLTc1YzctMDAxMjk2MDU4YTM3IiwiMjU3MjVmYzctOGM0YS1jODFiLTI3NjQtNGZmYjMxOGQ0NDM5IiwiMTVlYjNmNzUtZjQzYS03NzcyLTNmMGYtODRlN2YwNzljNDMyIiwiNGU1MDE0MmEtZjczNy05M2Q2LTJiZDctNWMyM2VjZDcwMjg0Iix7Im5hbWUiOiJqYXciLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiIyMGYyMGU0Yy1lOTYxLWZhNGQtM2JiOS02ZmNjYWM0ZjBlZDAiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMCwtMSwtNzJdLCJjaGlsZHJlbiI6WyI0ZmUyZTU5NS0wZjY2LWY2ZmItODE1Ni04NDYyOWUzNDEyYmEiXX1dfSx7Im5hbWUiOiJuZWNrIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiNDQxNDcwMjMtYjJiZC04YTYyLTBlN2EtZGZiZDcxODE1YmEwIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMywtNTNdLCJjaGlsZHJlbiI6WyJiMmQzZmNhNy01NTUwLTNhYzctZjZhYS00ZDYyNDIzZTJkMjEiLCJiNzFlM2YyNi1jZjIxLTFmZjgtYmI5MC01NjM2MjhmMmIxNDIiXX0seyJuYW1lIjoibmVjazIiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiIyMGRlM2I4Zi02MWNlLTAyMWEtYTZmYy05M2JjNmZhNDBiZWUiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMCwzLC00M10sImNoaWxkcmVuIjpbImE0ZGMzMmU2LWJlM2ItNzBlNC02ZmY0LTc0ZTAxYzgzMmZkNSIsImFiY2ZhNDA2LTRlMjAtMDE3ZS0xZjU4LWY0Yzc2YWVhNzlmNiJdfSx7Im5hbWUiOiJuZWNrMyIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjAwNTFjYjFmLTkyNGItOTAyZi0yZDFlLTMyYTZiZmRjODg3YiIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDMsLTMzXSwiY2hpbGRyZW4iOlsiNTNlODBhOTMtNjFmNS03ODMyLWQxYjYtNGNjOWIwMmExMzA1IiwiNTEyM2U4YjEtM2E0MS05YTU3LTg5OGQtZmZlZTVhYTNjMzQxIl19LHsibmFtZSI6Im5lY2s0Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiNjdkNGM2ZTctZTM3NS0xOTg3LTJiOGUtZGU2YTBiNjYzNWUzIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMywtMjNdLCJjaGlsZHJlbiI6WyIzYmQ3MDk0Mi1lYzdmLTVjMzgtZTc3NS1jYTdmNzAyOGY1N2IiLCJhMTRjNjE4ZS1mMzgzLTgzYTItYWI0Zi05ZjdmMTM3MTc4NDQiXX0seyJuYW1lIjoibmVjazUiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI1OWI3MzI1Zi1jMjBiLTYwYjYtZTY2Ni0wOGU5OGRhNmU3MjciLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMCwzLC0xM10sImNoaWxkcmVuIjpbImI2ODdmMTM1LWUzZTktN2I4NS0xNGI4LTc0NTliZmUyMmU4MCIsImQ3YWJmNWQxLTI0N2QtMzhmZC1lZWQxLTljODBhMmNmZmJjMyJdfSx7Im5hbWUiOiJib2R5Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiOWRkNzAxM2YtNjZmNS0xZTBkLWY4ZGItMzIyN2QxNTRiOTEwIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsOCwyNF0sImNoaWxkcmVuIjpbImNmZmUyZDBlLWEwM2EtZDNhZS1kNzI3LTA2ZWE5NDllMWQyZSIsImI0YzFjNzkzLWM0NjYtYzQwYy05ZWJlLWYyNWYxNmMyYzU3MCIsIjU0ZGM3Y2FhLTQyNTktMzUwYy1mNDc5LWY3ODE2YTNkODNiOSIsIjc2OTYyYmMxLWRkYmYtMjU2ZS01ZDk5LWQzZDI4NmQwNGJlMyJdfSx7Im5hbWUiOiJsZWZ0V2luZyIsInNoYWRlIjpmYWxzZSwidXVpZCI6ImVlNjQ4NGYzLWQ3OTYtNDJiZC1hMjU4LTc1NDU4MTQ2OTc1MiIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlsxMiwxOSwyXSwiY2hpbGRyZW4iOlsiOTQwNWYwOWUtNzVkNi0xZGY5LWU3YTUtNTZjYTUxZTgxZjg4IiwiOTRiYWUyN2QtOWU2Ni1kYzRkLWQyNWUtZDczMWY3YjE1OThiIix7Im5hbWUiOiJsZWZ0V2luZ1RpcCIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjZmMjY3NDFlLWZjZmEtYTUzMy1mODViLTcyNzQwYmVhNmM3YSIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjp0cnVlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzY4LDE5LDJdLCJjaGlsZHJlbiI6WyJhNmU3NzQwMy00NmRhLTk5N2UtZjFlZi05MzI5ODk3NTM5ZDkiLCI0OGE0ZTgyNC1mYjY0LTU4ZDItOWM3MS1hMjRjNjU4MTZjNDAiXX1dfSx7Im5hbWUiOiJyaWdodFdpbmciLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI2NjdjODYxNy02ZDAwLTVkOGItOTRhNi03YjIyMzZhNTM2NzUiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbLTEyLDE5LDJdLCJyb3RhdGlvbiI6WzAsMCwtMTgwXSwiY2hpbGRyZW4iOlsiYWZkMGQ1OTktNGYxYS1mNjA3LThkNmYtODJiNDE3ZmM1MDM0IiwiMjFiZmYyZTEtMTkyNy0yMDM5LWNlOWYtMzNmZWEwMTlkNzJiIix7Im5hbWUiOiJyaWdodFdpbmdUaXAiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI4YWVhZTU4YS04ZDhiLTRmNTctNGM4My03NGE3ZDMyNTIwNTgiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6dHJ1ZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOls0NCwxOSwyXSwiY2hpbGRyZW4iOlsiMGZiMDQ1ODQtNjJlMi00ZDk5LTRjNDctYjVmYjgwMTgyMTE0IiwiN2EyMTQ5YWItYjMwNS1lZTQ0LTE2MGEtZDQ0MWIwZWMzODQ5Il19XX0seyJuYW1lIjoibGVmdFJlYXJMZWciLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI1ODdjNTQ3OS1kMjA3LTAwNDUtNDkyOS03MzJiODk0N2RjOTkiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMTYsOCw0Ml0sImNoaWxkcmVuIjpbImZkMjQ4ZTFkLThmMDAtMDExYS00MmE3LTFiYjZmMTM2NzVkYyIseyJuYW1lIjoibGVmdFJlYXJMZWdUaXAiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI2OGQyZTQwMC1lNTczLTk1NjktNWZlZi1mOGE2OGU2ZDg4ODEiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6dHJ1ZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlsxNiwtMjIsMzhdLCJjaGlsZHJlbiI6WyI2ODg1ZmFjMC1jZDYzLWY3N2YtNTNiNi0xYTExM2YzZTljOTMiLHsibmFtZSI6ImxlZnRSZWFyRm9vdCIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjdhOGZlMTM5LTUwODctYjA1ZC01OTQzLTBmMmQyZDMzMTk0MyIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjp0cnVlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzE2LC01NCw0Ml0sImNoaWxkcmVuIjpbIjgwMjAyMWIzLWZmMTMtYmZiMy0yYzk5LThmZGJmODk5NTRlNiJdfV19XX0seyJuYW1lIjoicmlnaHRSZWFyTGVnIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiZjk2MThlMjQtNWQxMS0yNWU4LTM3YjctNmQ0MzAzYjAyYzVkIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6Wy0xNiw4LDQyXSwiY2hpbGRyZW4iOlsiZjBjZWEyZWQtNTM5Ni0wNmQ5LTU0MjUtZjAyYTA3MjY0M2M3Iix7Im5hbWUiOiJyaWdodFJlYXJMZWdUaXAiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiJmZTY3MTA5Yi1jNzY0LTE4YzEtMGU0My0zMTk5OWMwNDRhNTkiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6dHJ1ZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlstMTYsLTIyLDM4XSwiY2hpbGRyZW4iOlsiYjcyMDRhYjktMWRhNC0yNmFhLTJlYzQtZjk1NDBlMjE5YWYzIix7Im5hbWUiOiJyaWdodFJlYXJGb290Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiYmE1OWU3MWEtMDA1Zi0xZjkwLWM2MWYtMGVkZTQwZDg2NjY2IiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOnRydWUsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbLTE2LC01NCw0Ml0sImNoaWxkcmVuIjpbIjQ5ODI1MjA1LTA3YmQtMGUzMy0wNTRlLWYwYWZjNGI3ZTE2YSJdfV19XX0seyJuYW1lIjoibGVmdEZyb250TGVnIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiZjcyNzNhYmItYWQ4MC1iZDBlLTM4NDEtZDZhY2Q1Y2Q0N2Q0IiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzEyLDQsMl0sImNoaWxkcmVuIjpbIjUzMWRmNWY4LWM5OTYtOGZiMy04N2JlLWY5ZWIwOGM3MDBiYyIseyJuYW1lIjoibGVmdEZyb250TGVnVGlwIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiY2Q4MTBmZWMtNjQ0ZC1kOGUzLTk3N2YtZThhNWJlMjRhOTNhIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOnRydWUsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMTIsLTE2LDJdLCJjaGlsZHJlbiI6WyI3OTg1NjRiYy04MmNkLWZiNTItMGEwYi01MTI2NmVjZDdkMDAiLHsibmFtZSI6ImxlZnRGcm9udEZvb3QiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiIwZWM3ZDMwMy04YzBiLTk4ZGMtZTAxZC0xMTJmNWU2ZjI3ODkiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6dHJ1ZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlsxMiwtNDAsMl0sImNoaWxkcmVuIjpbIjAwMmFlNjk1LWQ1YzMtZTYxMS02NmZjLTU4NTM1MTk5OGI5ZSJdfV19XX0seyJuYW1lIjoicmlnaHRGcm9udExlZyIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjZlMTMyYzdmLWYzOWQtNGJjMC02MDUyLTVhOGIwZjFmNGUzOCIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlstMTIsMywyXSwiY2hpbGRyZW4iOlsiZjJjMDYwMzUtMWQ2MC1jZTM0LWU0YjMtNjc3YmQ1MmRjODNkIix7Im5hbWUiOiJyaWdodEZyb250TGVnVGlwIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiYTNmMjRjZDItMGU5OC1lNzU5LWMwZjktMzdhOWQ2ODc1MTc0IiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOnRydWUsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbLTEyLC0xNiwyXSwiY2hpbGRyZW4iOlsiMDM4N2E2NjMtZTQzMS04MTY2LWEwMGMtZGU0MDgxNzQ2NTIzIix7Im5hbWUiOiJyaWdodEZyb250Rm9vdCIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjIwYTY0OThlLTdhZTQtYjBkYi1hZmE0LTJiZDg1NDcxNWM3ZSIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjp0cnVlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6Wy0xMiwtNDAsMF0sImNoaWxkcmVuIjpbImUxZjA5MzMzLTI0MjQtN2ZkZS02MThlLTgyZTVkN2JhMjc5NyJdfV19XX0seyJuYW1lIjoidGFpbCIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjdiMmZjN2EwLTBlYWQtMGFmNi1jYmJkLTZhZjU4ZmQyMjgxYyIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDE0LDYxXSwiY2hpbGRyZW4iOlsiN2Q2YWI4MzMtMmExZC0wMzdmLTMwOGYtNTIwNzdlZjNjOGY1IiwiMjI5ZDEyZjQtMWQ3NS04NGNmLTBhNzYtMzAyZmJmMzY2OTcxIl19LHsibmFtZSI6InRhaWwyIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiZjMyZjRmMzktY2Q0My05N2FjLWUyNDgtNDFiOWI5OTBiMGI0IiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsNzFdLCJjaGlsZHJlbiI6WyJjM2I0Y2JlYS04OGUzLTdjMWUtZjM1OC03MzY2YTQwY2M5NjgiLCI1NTkxOGQ2Ny05NmMwLTI1ODItMzYzNi1kZmJkOWI5ZmNkNjQiXX0seyJuYW1lIjoidGFpbDMiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiI5NzljM2Q0Zi1jY2VhLTA2MmQtMzNkYS00NDQ4ZDExMTczZmYiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMCwxNCw4MV0sImNoaWxkcmVuIjpbImUwZjY3ZTIxLWI5NmMtM2ZlZS04YTU0LWMwYjgxNjQxYzAwMSIsIjZhZjBkNTQ2LTliYTItYjQ5MC0zZWY1LTZmZjYxNDRiNzBlZiJdfSx7Im5hbWUiOiJ0YWlsNCIsInNoYWRlIjpmYWxzZSwidXVpZCI6IjQ2NDgwNTkwLTVmZjktZDYxZi1kODAxLWJmMGJlZmY0MzU0ZiIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDE0LDkxXSwiY2hpbGRyZW4iOlsiOTkzZmIyNzctMmQxMy1jYzNhLTNmOTgtOThhMGUyZmRkNmNhIiwiOWEwMGY0ZWUtNmMxYS03YTQ3LTcyNjEtZTE0YzVmODgwYjU2Il19LHsibmFtZSI6InRhaWw1Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiZjkxNmFjODEtOWY0MS0xMmFkLTYyOTktODgzMjJmMDZhNTdiIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTAxXSwiY2hpbGRyZW4iOlsiNzQwNGE5ZDYtYTBkYy1kM2NkLWNjMmItZmZjNDAwMDc3ZTY1IiwiMmNlNmY2OTItODlmMS1lYzU5LTRkNDgtMTFkN2M1ZDIwMjI3Il19LHsibmFtZSI6InRhaWw2Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiN2Y0MDVjOTgtYjRjMy1iZTJhLWJmYWItOTQzZTY2Zjk1ZTQxIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTExXSwiY2hpbGRyZW4iOlsiZTlhNzkzOTktZTY4Yy1kZjZiLWUzZWMtNjMxNjNiYWQyM2Q5IiwiMzJhODE1MDAtNjRjZi01OTJjLTZhNDctYTU0NzJlYzRiNWY3Il19LHsibmFtZSI6InRhaWw3Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiMGU1NTkyODItMjdlNi00NDAwLTIxMzMtNmFhNWQ4ODNlYmFlIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTIxXSwiY2hpbGRyZW4iOlsiZWMzYWM0ZWItZTc4MC1lYmI3LWY0OTUtZmY4ZGQxODNjYmFjIiwiYTk4Mzc3MWUtZjI1NC0zZTA0LWNjNmYtOWMzZTUxMWU4YjliIl19LHsibmFtZSI6InRhaWw4Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiNTg1MDRjZjgtZjBiMi02YjhjLTEyNmMtYjJiYjFjZTFmNTYyIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTMxXSwiY2hpbGRyZW4iOlsiMTJhZWJmZTgtMTc1My02NGIyLTEwY2MtNDY5OGEyODUxNmRlIiwiOWEyMWI2ODUtNWU2OC1kMGYyLWU0NWMtOGY4ODQ1ZTg1MGZhIl19LHsibmFtZSI6InRhaWw5Iiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiZmYxZDg5ZmMtOWJhNi0yYTc1LTBhNjMtM2QwZTc0MWU2NDViIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTQxXSwiY2hpbGRyZW4iOlsiZWUwZDk2MTUtYjg2NS05MTNlLWMwZDktZmNkM2I5Y2EwNjA0IiwiM2Y5ZDdjNTYtNGI4Ny1jMzc2LTdiODMtZWJiOGVlMzA1MDliIl19LHsibmFtZSI6InRhaWwxMCIsInNoYWRlIjpmYWxzZSwidXVpZCI6ImU0OTlmNmQzLTRlNTMtNTAzZi1mODgzLTY5YzdiNTE3NzRiYiIsImV4cG9ydCI6dHJ1ZSwiaXNPcGVuIjpmYWxzZSwidmlzaWJpbGl0eSI6dHJ1ZSwiYXV0b3V2IjowLCJvcmlnaW4iOlswLDE0LDE1MV0sImNoaWxkcmVuIjpbImUzNjUzMjZhLTJjMWYtZjc3YS1kOWU5LTIyMjdkNjMwY2Y4MyIsIjg5OTM2MjFjLTgyZTUtZjI3OC00MzYyLTQyOTZjOGRiYjcwZiJdfSx7Im5hbWUiOiJ0YWlsMTEiLCJzaGFkZSI6ZmFsc2UsInV1aWQiOiJhN2ViOThhNy1iNDhkLTEwYzQtZmZjNS01NGZhYzVhYjJkMzEiLCJleHBvcnQiOnRydWUsImlzT3BlbiI6ZmFsc2UsInZpc2liaWxpdHkiOnRydWUsImF1dG91diI6MCwib3JpZ2luIjpbMCwxNCwxNjFdLCJjaGlsZHJlbiI6WyJhOGViOTdjNy1jMjY0LWRhNWEtOTNiNS02NjQ1YjBhYTYzODAiLCI1NDlhMDU0Yy0zOTdkLWVmZWMtNGI3Mi0yMzZmNGEzOGQwOGYiXX0seyJuYW1lIjoidGFpbDEyIiwic2hhZGUiOmZhbHNlLCJ1dWlkIjoiMGYyNDkwZmQtOWJiMC00NTBiLTllOGMtMTM5Y2YyNDdiNjhiIiwiZXhwb3J0Ijp0cnVlLCJpc09wZW4iOmZhbHNlLCJ2aXNpYmlsaXR5Ijp0cnVlLCJhdXRvdXYiOjAsIm9yaWdpbiI6WzAsMTQsMTcxXSwiY2hpbGRyZW4iOlsiN2U0MGM4MDUtYjk5My04YjljLTZlOTYtODQxNzA1OTNkYWQ1IiwiOGQ2YWI2YWQtZTBkYS1mOGI0LWNlMDMtNDM2ZGI5N2VjYjdlIl19XX1dLCJ0ZXh0dXJlcyI6W3sicGF0aCI6ImRyYWdvbi5wbmciLCJuYW1lIjoiZHJhZ29uLnBuZyIsImZvbGRlciI6InRleHR1cmVzL2VudGl0eS9lbmRlcmRyYWdvbiIsIm5hbWVzcGFjZSI6Im1pbmVjcmFmdCIsImlkIjoiMCIsInBhcnRpY2xlIjpmYWxzZSwibW9kZSI6ImxpbmsiLCJzYXZlZCI6dHJ1ZSwidXVpZCI6IjcwMGZkNjczLWIwNDYtNTAxNS01Mzg1LTIxNWY4ZWI0YzNiMiJ9XX0="
              
            
!
999px

Console