You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by la...@apache.org on 2024/02/21 05:21:22 UTC
(druid-website) 01/01: add site for 29.0.0 release
This is an automated email from the ASF dual-hosted git repository.
lakshsingla pushed a commit to branch 29.0.0-site-240221
in repository https://gitbox.apache.org/repos/asf/druid-website.git
commit f2b5f2fddfbded02e12a93701d55a01203fce9db
Author: Laksh Singla <la...@gmail.com>
AuthorDate: Wed Feb 21 10:51:03 2024 +0530
add site for 29.0.0 release
---
404.html | 8 +-
...chitecture-7db1cd79d2d70b2e5ccc73b6bebfcaa4.svg | 19 +++
...comparison-665af4720d1b302515a31f758b824f26.png | Bin 0 -> 45331 bytes
...nfo-dialog-300a1e58533b10622fd945eca74911e4.png | Bin 0 -> 107805 bytes
...visor-view-83f761c82cf23094ae3d37c91371b655.png | Bin 0 -> 63532 bytes
assets/js/008dc6c0.b0c66dc0.js | 1 +
assets/js/01019b7b.df2cb240.js | 1 +
assets/js/0109f7c7.93e682ec.js | 1 +
assets/js/035ed994.9be30588.js | 1 +
assets/js/04d4205e.e446f8af.js | 1 +
assets/js/054cf69c.a19e6887.js | 1 +
assets/js/0591e968.777c48ed.js | 1 +
assets/js/05b5ec86.39aa10f5.js | 1 +
assets/js/05f6bd73.c0989214.js | 1 +
assets/js/06621b6d.0e734d5e.js | 1 +
assets/js/06bb6c62.00830217.js | 1 +
assets/js/077bf22c.dec23d2d.js | 1 +
assets/js/0ae1be71.8612a9e1.js | 1 +
assets/js/0bbc3844.d72f316b.js | 1 +
assets/js/0c347cbc.ead87b74.js | 1 +
assets/js/0c5549ae.4c422e24.js | 1 +
assets/js/0c83841d.036feb48.js | 1 +
assets/js/0c870731.50a1526a.js | 1 +
assets/js/0cbf8c76.5424cc91.js | 1 +
assets/js/0e1242db.f7b5f311.js | 1 +
assets/js/0f521c09.9b200e06.js | 1 +
assets/js/0f59f104.54c20929.js | 1 +
assets/js/0f7339bc.ea4ebd6c.js | 1 +
assets/js/10f31d44.baf397f4.js | 1 +
assets/js/11205e05.c1e0f381.js | 1 +
assets/js/128e376b.e5ed2590.js | 1 +
assets/js/12d97def.4ed8040b.js | 1 +
assets/js/13ec796f.31199178.js | 1 +
assets/js/1416f869.858f3ca6.js | 1 +
assets/js/14e10449.d94f9658.js | 1 +
assets/js/14fe9d3d.9a7449cf.js | 1 +
assets/js/162f104e.dcb24c3f.js | 1 +
assets/js/16cdfe1f.81d181ae.js | 1 +
assets/js/175147d3.128ff523.js | 1 +
assets/js/180c7d3d.707c1fd1.js | 1 +
assets/js/1871b932.6a7cde29.js | 1 +
assets/js/1981460b.d8b58f4d.js | 1 +
assets/js/1c6ec3f0.06804c54.js | 1 +
assets/js/1cb29896.934198b6.js | 1 +
assets/js/1dbed9b8.0e51c37d.js | 1 +
assets/js/1e267fd0.c8aea834.js | 1 +
assets/js/1e55cdad.37f37478.js | 1 +
assets/js/1fb9f5aa.3a329bcd.js | 1 +
assets/js/2006e5b3.a2eca4c1.js | 1 +
assets/js/216f5e40.744e75a2.js | 1 +
assets/js/221e2a28.fad95750.js | 1 +
assets/js/2271b53b.afef265c.js | 1 +
assets/js/23d0d62d.7e05716e.js | 1 +
assets/js/25bcdfb1.32443ef8.js | 1 +
assets/js/25bf4862.8ca75fcf.js | 1 +
assets/js/2677d7b8.a379283d.js | 1 +
assets/js/268fe099.e956014b.js | 1 +
assets/js/26f2754c.99c92df7.js | 1 +
assets/js/274a38ba.74792bc2.js | 1 +
assets/js/27930202.318dd3c5.js | 1 +
assets/js/28095a7c.59fa9750.js | 1 +
assets/js/285d2efe.14effa91.js | 1 +
assets/js/292ba8e7.731ca173.js | 1 +
assets/js/293487cb.6842a7bb.js | 1 +
assets/js/2951a428.80c710ff.js | 1 +
assets/js/2ab55e37.de48a00d.js | 1 +
assets/js/2af72138.e305971b.js | 1 +
assets/js/2c5b6b24.8c090f16.js | 1 +
assets/js/2c9eea52.aebd0cb3.js | 1 +
assets/js/2cfe4cf6.ed7a85b9.js | 1 +
assets/js/2d2555e5.63104932.js | 1 +
assets/js/2d6cfe83.0bcdb857.js | 1 +
assets/js/2ec3a9a7.d9e71afb.js | 1 +
assets/js/2fbe7d8e.bd105c0b.js | 1 +
assets/js/2fdfe072.e4d87900.js | 1 +
assets/js/3135cdec.bcff538c.js | 1 +
assets/js/315053d0.d46efa53.js | 1 +
assets/js/31f72083.81ee5a2a.js | 1 +
assets/js/32212b8b.46f503e7.js | 1 +
assets/js/32256df4.f9650899.js | 1 +
assets/js/32f5b141.9e0bb023.js | 1 +
assets/js/32fb84ff.f33af4ca.js | 1 +
assets/js/33e3889f.9460f763.js | 1 +
assets/js/349c2143.32b574c0.js | 1 +
assets/js/34da69bb.982f2300.js | 1 +
assets/js/36497d9a.6efd4c0b.js | 1 +
assets/js/382081cb.b59151ac.js | 1 +
assets/js/3850f2cd.58e04bb5.js | 1 +
assets/js/39e8690f.2ffc331d.js | 1 +
assets/js/3aef39f9.3de885bc.js | 1 +
assets/js/3ba5c2fc.5394fc02.js | 1 +
assets/js/3ccbe206.01fa8f49.js | 1 +
assets/js/3dc3081e.62800137.js | 1 +
assets/js/3dc48ea3.f15de7db.js | 1 +
assets/js/3df53c0b.65b6d642.js | 1 +
assets/js/3ee44481.abc535f5.js | 1 +
assets/js/3fc4ca5f.ab4b8ed7.js | 1 +
assets/js/3fdeab71.b7507521.js | 1 +
assets/js/404e84a5.ba2699df.js | 1 +
assets/js/408f2282.6e6122b4.js | 1 +
assets/js/4113b856.4af9b667.js | 1 +
assets/js/412ee224.e53b5e8a.js | 1 +
assets/js/41b2c32b.4a21a0f6.js | 1 +
assets/js/41dbc86e.8551d373.js | 1 +
assets/js/42be3a3f.68dace42.js | 1 +
assets/js/42dd4fd0.12d78f44.js | 1 +
assets/js/43c5580d.ca58458d.js | 1 +
assets/js/4451b7a8.95b1a952.js | 1 +
assets/js/445bf8fb.4e0bced4.js | 1 +
assets/js/4505fb1c.a185dac4.js | 1 +
assets/js/45247bbe.62d650d4.js | 1 +
assets/js/457e0700.4b216276.js | 1 +
assets/js/47002093.b2c8850f.js | 1 +
assets/js/48151658.e2d74e0e.js | 1 +
assets/js/4d24b7c4.8b3c195f.js | 1 +
assets/js/4e063dea.784855f4.js | 1 +
assets/js/4eb80632.88d40c9e.js | 1 +
assets/js/4ec2c662.f86c8180.js | 1 +
assets/js/4f22fcc6.4bc27347.js | 1 +
assets/js/4fbcb8e1.875f4296.js | 1 +
assets/js/503ba086.d7a0a453.js | 1 +
assets/js/504b36f7.ab674110.js | 1 +
assets/js/50d798df.8a7dfcd3.js | 1 +
assets/js/52c72b17.3c3f1a41.js | 1 +
assets/js/547788e1.ea1f02de.js | 1 +
assets/js/54a411b6.1809665d.js | 1 +
assets/js/55e202dc.1672e293.js | 1 +
assets/js/55fdd877.fa6cdc5b.js | 1 +
assets/js/5670b262.8b204301.js | 1 +
assets/js/567f2b24.ec1360b7.js | 1 +
assets/js/57ee89c0.657f47cd.js | 1 +
assets/js/58874471.df827411.js | 1 +
assets/js/58b22988.1099322e.js | 1 +
assets/js/58edcf77.54f995dd.js | 1 +
assets/js/5a08e3a4.0dc414dc.js | 1 +
assets/js/5a722b3b.f8a27ddb.js | 1 +
assets/js/5a89402e.290f6fca.js | 1 +
assets/js/5bb38577.8f6fc382.js | 1 +
assets/js/5bcd0a3f.7614ccc8.js | 1 +
assets/js/5bf6e863.2581593c.js | 1 +
assets/js/5c6b73c5.d2057bbd.js | 1 +
assets/js/5ddf27b8.c496dfeb.js | 1 +
assets/js/5e9ea8d6.ba24b662.js | 1 +
assets/js/5ecd7b94.e5cc6a4a.js | 1 +
assets/js/5eed60db.a3a7fd4b.js | 1 +
assets/js/5f349eee.98a22383.js | 1 +
assets/js/5f40121b.d96ad403.js | 1 +
assets/js/5f8c15b3.ed8bb0fb.js | 1 +
assets/js/5fa314af.2cfb1279.js | 1 +
assets/js/5ff9c08d.d242e779.js | 1 +
assets/js/5ffc9c90.afd4ea4e.js | 1 +
assets/js/60b9c99e.bd70a20e.js | 1 +
assets/js/60b9c99e.e78b596a.js | 1 -
assets/js/60f9804e.2cfc53a6.js | 1 +
assets/js/612017ab.8fdafdb0.js | 1 +
assets/js/615c06f6.379146e8.js | 1 +
assets/js/6547e5cb.917f866f.js | 1 +
assets/js/672a9227.4342d623.js | 1 +
assets/js/67933092.fde7658a.js | 1 +
assets/js/67c671c5.28c16b0a.js | 1 +
assets/js/68368662.c2178e3f.js | 1 +
assets/js/6865240a.3b28be3c.js | 1 -
assets/js/6865240a.d68f5211.js | 1 +
assets/js/688a6cad.8d4f3604.js | 1 +
assets/js/6979e7da.d97c9f61.js | 1 +
assets/js/69bee408.8882c7c2.js | 1 +
assets/js/6bb9967c.1c07fe5d.js | 1 -
assets/js/6bb9967c.8feb102e.js | 1 +
assets/js/6c62c6c7.e9d2a8ad.js | 1 +
assets/js/6cdb5461.42743f61.js | 1 +
assets/js/6d081973.8d4c385d.js | 1 +
assets/js/6d526f5c.7e5d2fb3.js | 1 +
assets/js/6f318b00.7914511b.js | 1 +
assets/js/704b58a6.b64f6b15.js | 1 +
assets/js/7178b9b6.399be51c.js | 1 +
assets/js/71b76a87.7a988d04.js | 1 +
assets/js/71de5257.91f5368b.js | 1 +
assets/js/723062a3.df8c1a00.js | 1 +
assets/js/72f6be96.e794eb4d.js | 1 +
assets/js/73d55dcf.bd6efb62.js | 1 +
assets/js/740ee517.97509c96.js | 1 +
assets/js/760e0b1e.e6936821.js | 1 +
assets/js/769d5196.7f02d2cf.js | 1 +
assets/js/7761ea0c.8eb24979.js | 1 +
assets/js/77f0d0af.27f124ff.js | 1 +
assets/js/77f7adac.ab4a94da.js | 1 +
assets/js/782e3668.d188f03e.js | 1 +
assets/js/7a0ffe1e.bd61dc20.js | 1 +
assets/js/7a4a6d4c.8a4ba79c.js | 1 +
assets/js/7ac80b3d.5467c585.js | 1 +
assets/js/7b942940.aac2c16c.js | 1 +
assets/js/7bfab197.17dedc09.js | 1 +
assets/js/7db7c644.cd58d407.js | 1 +
assets/js/7ddaea69.40f9b81e.js | 1 +
assets/js/7ef2feef.504cf11e.js | 1 -
assets/js/7ef2feef.9cb1986d.js | 1 +
assets/js/7f7ce349.24e19205.js | 1 +
assets/js/819280be.ad403629.js | 1 +
assets/js/81985269.667904c0.js | 1 +
assets/js/82593e9b.db6540b9.js | 1 +
assets/js/82732c32.995769da.js | 1 +
assets/js/84ac5748.348da100.js | 1 +
assets/js/84fd1959.4c949af6.js | 1 +
assets/js/8549cd83.4d7f5362.js | 1 +
assets/js/85811133.0dfd32dd.js | 1 +
assets/js/8603200e.bd17c7d1.js | 1 +
assets/js/8603200e.ed44d493.js | 1 -
assets/js/86365239.14ceacc7.js | 1 +
assets/js/8643da2b.294cded3.js | 1 +
assets/js/866dea45.95338ded.js | 1 +
assets/js/86f503e8.c2b18ce8.js | 1 +
assets/js/86ff69a9.8a670032.js | 1 +
assets/js/881b6e93.432caf22.js | 1 +
assets/js/8902724d.a141c0fc.js | 1 +
assets/js/8926f85a.9d0552b6.js | 1 +
assets/js/8a6641d6.e3b91fae.js | 1 +
assets/js/8a6a3c86.17196902.js | 1 +
assets/js/8abd3472.f8fa029e.js | 1 +
assets/js/8adf3ad1.71f65ec1.js | 1 +
assets/js/8bf451e3.902fd53b.js | 1 +
assets/js/8c07abe5.6ecccace.js | 1 +
assets/js/8cdd5c5f.58196c75.js | 1 +
assets/js/8d1560b6.9c5b7e81.js | 1 +
assets/js/8d4becf1.56f6f2eb.js | 1 +
assets/js/8dd13a4f.36da6c63.js | 1 +
assets/js/8e7882e3.5bc26421.js | 1 +
assets/js/8e848799.58573e85.js | 1 +
assets/js/8e96f099.c52af446.js | 1 +
assets/js/8ea8f2dd.0029585d.js | 1 +
assets/js/90a27bdd.780c4b65.js | 1 +
assets/js/91b90c19.98009396.js | 1 +
assets/js/91e63cf7.ca58e95d.js | 1 +
assets/js/9216ddc9.2b48c092.js | 1 -
assets/js/9216ddc9.cf149453.js | 1 +
assets/js/92754ac2.a2dd36a1.js | 1 +
assets/js/92ec0124.a1c382e9.js | 1 +
assets/js/935f2afb.219550b5.js | 1 +
assets/js/935f2afb.d18a490d.js | 1 +
assets/js/941133d2.df5d8313.js | 1 +
assets/js/94aa3d86.0100b836.js | 1 +
assets/js/9537a24c.5ee59965.js | 1 +
assets/js/95eaac7a.cf551134.js | 1 +
assets/js/96217456.7069dac1.js | 1 +
assets/js/9636e5c7.e1eb8f49.js | 1 +
assets/js/98453339.26609af0.js | 1 +
assets/js/993fdb06.526a9a51.js | 1 +
assets/js/99d91b5a.b3b27599.js | 1 +
assets/js/9a41d3c9.12c56391.js | 1 +
assets/js/9af5fee7.7d818885.js | 1 +
assets/js/9b520f78.77f3f09e.js | 1 +
assets/js/9c46ead5.0d697bcb.js | 1 +
assets/js/9dd30c58.481a228c.js | 1 -
assets/js/9dd30c58.a986960f.js | 1 +
assets/js/9e519bb2.ce1b3720.js | 1 +
assets/js/a0538546.8897931b.js | 1 +
assets/js/a0cfed8c.c6f76726.js | 1 +
assets/js/a1bd808f.b82a0324.js | 1 +
assets/js/a1d693f4.3de35b08.js | 1 +
assets/js/a25872ab.832b9894.js | 1 +
assets/js/a2b332f7.b21ffb39.js | 1 +
assets/js/a2f5bdb0.aa7eb400.js | 1 +
assets/js/a8e19f39.4592ea89.js | 1 +
assets/js/a94c6434.d08b1e24.js | 1 +
assets/js/aac9aa13.9fb629ed.js | 1 +
assets/js/ab046938.5dd20524.js | 1 +
assets/js/ab897d12.1ed03d2e.js | 1 +
assets/js/ac78a47c.9cbde4c3.js | 1 +
assets/js/aded680a.7eaf00d1.js | 1 +
assets/js/af06fdec.ec0839e3.js | 1 +
assets/js/af159704.1e1dbb43.js | 1 +
assets/js/b019fc37.947c79e6.js | 1 +
assets/js/b0b17773.36e5017a.js | 1 +
assets/js/b0c79e6c.0a25f8df.js | 1 -
assets/js/b0c79e6c.d13182c8.js | 1 +
assets/js/b174ad29.9a13ce18.js | 1 +
assets/js/b213d090.e86cb13b.js | 1 +
assets/js/b2231989.b81bfb4a.js | 1 +
assets/js/b2d41fa9.1591430b.js | 1 +
assets/js/b2d97b87.8c13ac3f.js | 1 +
assets/js/b307eceb.3ca1079f.js | 1 +
assets/js/b3507710.f99092dd.js | 1 +
assets/js/b358c051.c6bdc00a.js | 1 +
assets/js/b647b2cd.67a13c69.js | 1 +
assets/js/b6d914f5.73af5089.js | 1 +
assets/js/b6d922f1.3bfa5b43.js | 1 +
assets/js/b6d922f1.a6354293.js | 1 -
assets/js/b75463b7.76cb827a.js | 1 +
assets/js/b8e9cb00.b4eed726.js | 1 +
assets/js/b964b515.ac507fcb.js | 1 -
assets/js/b964b515.c9366a58.js | 1 +
assets/js/ba471ed5.6ce98e57.js | 1 +
assets/js/ba471ed5.a373f4ef.js | 1 -
assets/js/ba8ae3fa.0e18b2cb.js | 1 +
assets/js/bbfa20a6.e5d9b62b.js | 1 +
assets/js/bd17f600.da8bbbb6.js | 1 +
assets/js/be1891ad.54100ce9.js | 1 +
assets/js/bee5d326.5390bc2c.js | 1 +
assets/js/c0161e79.1475e2aa.js | 1 +
assets/js/c0161e79.ad9f5faf.js | 1 -
assets/js/c0995780.7f1d4065.js | 1 +
assets/js/c233c888.70421ba6.js | 1 +
assets/js/c2ae6274.39176d8a.js | 1 +
assets/js/c35a7924.ae3f9ae8.js | 1 +
assets/js/c3bd4d0f.ae9217db.js | 1 +
assets/js/c4a9afd3.5141d653.js | 1 +
assets/js/c4eaa713.a962883d.js | 1 +
assets/js/c4f5d8e4.78d5e472.js | 1 -
assets/js/c4f5d8e4.aee9fefb.js | 1 +
assets/js/c5224f77.98816c07.js | 1 +
assets/js/c5760f30.f6c45127.js | 1 +
assets/js/c6999de6.c6510e0a.js | 1 +
assets/js/c704e2c0.dee0a548.js | 1 +
assets/js/c7bb32c0.9acf0668.js | 1 +
assets/js/c87bd0b3.ea050f30.js | 1 +
assets/js/c89bccce.7b31a4c1.js | 1 +
assets/js/c971ecb2.4362f2dd.js | 1 +
assets/js/c9fa3e8f.c2d9c85f.js | 1 +
assets/js/caadb9e4.b6a9a59c.js | 1 +
assets/js/caed696f.63204d3c.js | 1 +
assets/js/cc2b1268.1b07cfcd.js | 1 +
assets/js/cc5f8c18.a28508ea.js | 1 +
assets/js/ccecb300.632499ae.js | 1 +
assets/js/cd07172b.00a782e1.js | 1 +
assets/js/cd22c7ca.1fb99329.js | 1 +
assets/js/cd22c7ca.9df35a85.js | 1 -
assets/js/cd770d37.81e0dcee.js | 1 +
assets/js/cdec71b5.b34313c4.js | 1 +
assets/js/ce3c7d34.40bed509.js | 1 +
assets/js/ce66ed34.ff0662e3.js | 1 +
assets/js/cea8fd56.3cc1c21b.js | 1 -
assets/js/cea8fd56.e216baa8.js | 1 +
assets/js/cff5438d.2eb62d05.js | 1 +
assets/js/d05fa046.fabf2290.js | 1 +
assets/js/d099cfd7.7fc85cd5.js | 1 +
assets/js/d09adf36.59363a49.js | 1 +
assets/js/d10cff76.4c68c43a.js | 1 +
assets/js/d20adcc9.660ee0a1.js | 1 +
assets/js/d348e71d.64acf387.js | 1 +
assets/js/d800148d.809f2467.js | 1 +
assets/js/db509a08.98017939.js | 1 +
assets/js/dc3899c8.1ae1b487.js | 1 +
assets/js/dc670d7c.bbdddac1.js | 1 +
assets/js/dc86ecba.0de818c7.js | 1 +
assets/js/dc86ecba.45d14f17.js | 1 -
assets/js/dcd3699e.638b86e9.js | 1 +
assets/js/dd08839c.318d6fe9.js | 1 +
assets/js/dd5346cc.b0d10743.js | 1 +
assets/js/dd5c39f7.6fdce2c0.js | 1 +
assets/js/dec790ad.6df46cb4.js | 1 +
assets/js/e42f7105.1b2ea53d.js | 1 +
assets/js/e44d1fc1.667f6903.js | 1 +
assets/js/e577ad77.9fef75e1.js | 1 +
assets/js/e5b4ea37.bf7735eb.js | 1 +
assets/js/e6ea7cb8.a0f85c34.js | 1 -
assets/js/e6ea7cb8.d9b35549.js | 1 +
assets/js/e7087650.f0c11cf8.js | 1 +
assets/js/e771c2cf.ae085ac4.js | 1 +
assets/js/e7f0645b.bd9c88fb.js | 1 +
assets/js/e826572d.de285e36.js | 1 +
assets/js/e89091c2.2a9eaf86.js | 1 +
assets/js/e988a960.2f81cda2.js | 1 +
assets/js/ec47ab22.16d9d6ee.js | 1 -
assets/js/ec725065.b5437684.js | 1 +
assets/js/ec931258.fc9586a9.js | 1 +
assets/js/ecf09596.71296534.js | 1 +
assets/js/ee0b5f0e.a3dc2d84.js | 1 +
assets/js/f04833a0.9554dee7.js | 1 +
assets/js/f0b33a95.c74e816d.js | 1 +
assets/js/f0e31bc8.36fb3eab.js | 1 +
assets/js/f3422945.7ece9949.js | 1 +
assets/js/f5acae74.7b6ff7e9.js | 1 +
assets/js/f5f3bf76.5c8c336c.js | 1 +
assets/js/f601ecc3.d977d1a4.js | 1 +
assets/js/f7252a63.2b66f02d.js | 1 +
assets/js/f782f0c3.036102a4.js | 1 +
assets/js/f8b35359.dc1c0a48.js | 1 +
assets/js/f8ca60be.70e2d0d4.js | 1 +
assets/js/fa493215.9a43c59f.js | 1 +
assets/js/fa98c789.1a9ab9eb.js | 1 +
assets/js/fa9c8cab.f07f995b.js | 1 +
assets/js/fab582b2.8fe58274.js | 1 +
assets/js/fac897f3.6c1caa13.js | 1 +
assets/js/faf0402f.ac406d0a.js | 1 +
assets/js/fb0a26d1.397d5277.js | 1 +
assets/js/fb83fc4a.3eef1277.js | 1 +
assets/js/fc3af10a.bbc66a3d.js | 1 +
assets/js/fc6289eb.96cceb80.js | 1 +
assets/js/fe77072c.c6796000.js | 1 +
assets/js/fe8f4de1.476856ee.js | 1 +
assets/js/feb31aca.180e5600.js | 1 +
assets/js/ff52e0a2.1cd16d5d.js | 1 +
assets/js/ff6b2e0d.9b462181.js | 1 +
assets/js/main.66359c18.js | 2 +
...js.LICENSE.txt => main.66359c18.js.LICENSE.txt} | 0
assets/js/main.9edfa408.js | 2 +
...js.LICENSE.txt => main.9edfa408.js.LICENSE.txt} | 0
assets/js/main.d6cc924f.js | 2 -
assets/js/runtime~main.06837abf.js | 1 +
assets/js/runtime~main.5bfad63a.js | 1 -
assets/js/runtime~main.fc3ed64b.js | 1 +
blog/index.html | 8 +-
community/cla/index.html | 8 +-
community/index.html | 8 +-
community/join-slack/index.html | 8 +-
docs/29.0.0/api-reference.html/index.html | 11 ++
.../automatic-compaction-api.html/index.html | 11 ++
.../automatic-compaction-api/index.html | 26 ++++
.../data-management-api.html/index.html | 11 ++
.../api-reference/data-management-api/index.html | 43 ++++++
.../dynamic-configuration-api.html/index.html | 11 ++
.../dynamic-configuration-api/index.html | 35 +++++
docs/29.0.0/api-reference/index.html | 26 ++++
.../json-querying-api.html/index.html | 11 ++
.../api-reference/json-querying-api/index.html | 26 ++++
.../legacy-metadata-api.html/index.html | 11 ++
.../api-reference/legacy-metadata-api/index.html | 55 ++++++++
.../api-reference/lookups-api.html/index.html | 11 ++
docs/29.0.0/api-reference/lookups-api/index.html | 32 +++++
.../retention-rules-api.html/index.html | 11 ++
.../api-reference/retention-rules-api/index.html | 27 ++++
.../service-status-api.html/index.html | 11 ++
.../api-reference/service-status-api/index.html | 32 +++++
docs/29.0.0/api-reference/sql-api.html/index.html | 11 ++
docs/29.0.0/api-reference/sql-api/index.html | 29 ++++
.../sql-ingestion-api.html/index.html | 11 ++
.../api-reference/sql-ingestion-api/index.html | 38 +++++
docs/29.0.0/api-reference/sql-jdbc.html/index.html | 11 ++
docs/29.0.0/api-reference/sql-jdbc/index.html | 38 +++++
.../api-reference/supervisor-api.html/index.html | 11 ++
.../29.0.0/api-reference/supervisor-api/index.html | 33 +++++
.../29.0.0/api-reference/tasks-api.html/index.html | 11 ++
docs/29.0.0/api-reference/tasks-api/index.html | 29 ++++
.../druid-vs-elasticsearch.html/index.html | 11 ++
.../comparisons/druid-vs-elasticsearch/index.html | 33 +++++
.../comparisons/druid-vs-key-value.html/index.html | 11 ++
.../comparisons/druid-vs-key-value/index.html | 37 +++++
.../comparisons/druid-vs-kudu.html/index.html | 11 ++
docs/29.0.0/comparisons/druid-vs-kudu/index.html | 37 +++++
.../comparisons/druid-vs-redshift.html/index.html | 11 ++
.../comparisons/druid-vs-redshift/index.html | 26 ++++
.../comparisons/druid-vs-spark.html/index.html | 11 ++
docs/29.0.0/comparisons/druid-vs-spark/index.html | 34 +++++
.../druid-vs-sql-on-hadoop.html/index.html | 11 ++
.../comparisons/druid-vs-sql-on-hadoop/index.html | 44 ++++++
docs/29.0.0/configuration.html/index.html | 11 ++
docs/29.0.0/configuration/auth.html/index.html | 11 ++
docs/29.0.0/configuration/broker.html/index.html | 11 ++
docs/29.0.0/configuration/caching.html/index.html | 11 ++
.../configuration/coordinator.html/index.html | 11 ++
.../configuration/extensions.html/index.html | 11 ++
docs/29.0.0/configuration/extensions/index.html | 46 ++++++
docs/29.0.0/configuration/hadoop.html/index.html | 11 ++
.../configuration/historical.html/index.html | 11 ++
.../human-readable-byte.html/index.html | 11 ++
.../configuration/human-readable-byte/index.html | 27 ++++
docs/29.0.0/configuration/index.html | 128 +++++++++++++++++
.../configuration/indexing-service.html/index.html | 11 ++
docs/29.0.0/configuration/logging.html/index.html | 11 ++
docs/29.0.0/configuration/logging/index.html | 45 ++++++
.../production-cluster.html/index.html | 11 ++
docs/29.0.0/configuration/realtime.html/index.html | 11 ++
.../configuration/simple-cluster.html/index.html | 11 ++
.../29.0.0/configuration/zookeeper.html/index.html | 11 ++
docs/29.0.0/data-management.html/index.html | 11 ++
.../automatic-compaction.html/index.html | 11 ++
.../automatic-compaction/index.html | 46 ++++++
.../data-management/compaction.html/index.html | 11 ++
docs/29.0.0/data-management/compaction/index.html | 30 ++++
docs/29.0.0/data-management/delete.html/index.html | 11 ++
docs/29.0.0/data-management/delete/index.html | 51 +++++++
docs/29.0.0/data-management/index.html | 29 ++++
.../manual-compaction.html/index.html | 11 ++
.../data-management/manual-compaction/index.html | 27 ++++
.../data-management/schema-changes.html/index.html | 11 ++
.../data-management/schema-changes/index.html | 33 +++++
docs/29.0.0/data-management/update.html/index.html | 11 ++
docs/29.0.0/data-management/update/index.html | 46 ++++++
.../cassandra-deep-storage.html/index.html | 11 ++
docs/29.0.0/dependencies/zookeeper.html/index.html | 11 ++
docs/29.0.0/design.html/index.html | 11 ++
docs/29.0.0/design/architecture.html/index.html | 11 ++
docs/29.0.0/design/architecture/index.html | 38 +++++
docs/29.0.0/design/auth.html/index.html | 11 ++
docs/29.0.0/design/broker.html/index.html | 11 ++
docs/29.0.0/design/broker/index.html | 27 ++++
.../concepts-and-terminology.html/index.html | 11 ++
docs/29.0.0/design/coordinator.html/index.html | 11 ++
docs/29.0.0/design/coordinator/index.html | 59 ++++++++
docs/29.0.0/design/deep-storage.html/index.html | 11 ++
docs/29.0.0/design/deep-storage/index.html | 30 ++++
docs/29.0.0/design/design.html/index.html | 11 ++
.../extensions-contrib/dropwizard.html/index.html | 11 ++
.../extensions-contrib/dropwizard/index.html | 33 +++++
docs/29.0.0/design/historical.html/index.html | 11 ++
docs/29.0.0/design/historical/index.html | 29 ++++
docs/29.0.0/design/index.html | 44 ++++++
docs/29.0.0/design/indexer.html/index.html | 11 ++
docs/29.0.0/design/indexer/index.html | 28 ++++
.../29.0.0/design/indexing-service.html/index.html | 11 ++
docs/29.0.0/design/indexing-service/index.html | 27 ++++
.../29.0.0/design/metadata-storage.html/index.html | 11 ++
docs/29.0.0/design/metadata-storage/index.html | 50 +++++++
docs/29.0.0/design/middlemanager.html/index.html | 11 ++
docs/29.0.0/design/middlemanager/index.html | 27 ++++
docs/29.0.0/design/overlord.html/index.html | 11 ++
docs/29.0.0/design/overlord/index.html | 29 ++++
docs/29.0.0/design/peons.html/index.html | 11 ++
docs/29.0.0/design/peons/index.html | 28 ++++
docs/29.0.0/design/plumber.html/index.html | 11 ++
docs/29.0.0/design/processes.html/index.html | 11 ++
docs/29.0.0/design/realtime.html/index.html | 11 ++
docs/29.0.0/design/router.html/index.html | 11 ++
docs/29.0.0/design/router/index.html | 43 ++++++
docs/29.0.0/design/segments.html/index.html | 11 ++
docs/29.0.0/design/segments/index.html | 42 ++++++
docs/29.0.0/design/storage.html/index.html | 11 ++
docs/29.0.0/design/storage/index.html | 36 +++++
docs/29.0.0/design/zookeeper.html/index.html | 11 ++
docs/29.0.0/design/zookeeper/index.html | 26 ++++
.../approximate-histograms.html/index.html | 11 ++
docs/29.0.0/development/build.html/index.html | 11 ++
docs/29.0.0/development/build/index.html | 8 +-
.../community-extensions/azure.html/index.html | 11 ++
.../community-extensions/cassandra.html/index.html | 11 ++
.../cloudfiles.html/index.html | 11 ++
.../community-extensions/graphite.html/index.html | 11 ++
.../kafka-simple.html/index.html | 11 ++
.../community-extensions/rabbitmq.html/index.html | 11 ++
.../development/contribute-to-docs.html/index.html | 11 ++
.../development/contribute-to-docs/index.html | 31 ++++
.../development/experimental.html/index.html | 11 ++
docs/29.0.0/development/experimental/index.html | 29 ++++
.../extensions-contrib/aliyun-oss.html/index.html | 11 ++
.../extensions-contrib/aliyun-oss/index.html | 30 ++++
.../ambari-metrics-emitter.html/index.html | 11 ++
.../ambari-metrics-emitter/index.html | 35 +++++
.../extensions-contrib/cassandra.html/index.html | 11 ++
.../extensions-contrib/cassandra/index.html | 28 ++++
.../extensions-contrib/cloudfiles.html/index.html | 11 ++
.../extensions-contrib/cloudfiles/index.html | 28 ++++
.../compressed-big-decimal.html/index.html | 11 ++
.../compressed-big-decimal/index.html | 26 ++++
.../ddsketch-quantiles.html/index.html | 11 ++
.../ddsketch-quantiles/index.html | 26 ++++
.../extensions-contrib/delta-lake.html/index.html | 11 ++
.../extensions-contrib/delta-lake/index.html | 32 +++++
.../distinctcount.html/index.html | 11 ++
.../extensions-contrib/distinctcount/index.html | 26 ++++
.../gce-extensions.html/index.html | 11 ++
.../extensions-contrib/gce-extensions/index.html | 38 +++++
.../extensions-contrib/google.html/index.html | 11 ++
.../extensions-contrib/graphite.html/index.html | 11 ++
.../extensions-contrib/graphite/index.html | 41 ++++++
.../extensions-contrib/iceberg.html/index.html | 11 ++
.../extensions-contrib/iceberg/index.html | 35 +++++
.../extensions-contrib/influx.html/index.html | 11 ++
.../extensions-contrib/influx/index.html | 26 ++++
.../influxdb-emitter.html/index.html | 11 ++
.../extensions-contrib/influxdb-emitter/index.html | 30 ++++
.../extensions-contrib/k8s-jobs.html/index.html | 11 ++
.../extensions-contrib/k8s-jobs/index.html | 36 +++++
.../kafka-emitter.html/index.html | 11 ++
.../extensions-contrib/kafka-emitter/index.html | 29 ++++
.../kafka-simple.html/index.html | 11 ++
.../materialized-view.html/index.html | 11 ++
.../materialized-view/index.html | 27 ++++
.../momentsketch-quantiles.html/index.html | 11 ++
.../momentsketch-quantiles/index.html | 27 ++++
.../moving-average-query.html/index.html | 11 ++
.../moving-average-query/index.html | 31 ++++
.../opentsdb-emitter.html/index.html | 11 ++
.../extensions-contrib/opentsdb-emitter/index.html | 29 ++++
.../extensions-contrib/orc.html/index.html | 11 ++
.../extensions-contrib/parquet.html/index.html | 11 ++
.../extensions-contrib/prometheus.html/index.html | 11 ++
.../extensions-contrib/prometheus/index.html | 32 +++++
.../extensions-contrib/rabbitmq.html/index.html | 11 ++
.../extensions-contrib/redis-cache.html/index.html | 11 ++
.../extensions-contrib/redis-cache/index.html | 26 ++++
.../extensions-contrib/rocketmq.html/index.html | 11 ++
.../extensions-contrib/scan-query.html/index.html | 11 ++
.../spectator-histogram.html/index.html | 11 ++
.../spectator-histogram/index.html | 93 ++++++++++++
.../extensions-contrib/sqlserver.html/index.html | 11 ++
.../extensions-contrib/sqlserver/index.html | 27 ++++
.../extensions-contrib/statsd.html/index.html | 11 ++
.../extensions-contrib/statsd/index.html | 41 ++++++
.../tdigestsketch-quantiles.html/index.html | 11 ++
.../tdigestsketch-quantiles/index.html | 35 +++++
.../extensions-contrib/thrift.html/index.html | 11 ++
.../extensions-contrib/thrift/index.html | 26 ++++
.../time-min-max.html/index.html | 11 ++
.../extensions-contrib/time-min-max/index.html | 28 ++++
.../approximate-histograms.html/index.html | 11 ++
.../approximate-histograms/index.html | 52 +++++++
.../extensions-core/avro.html/index.html | 11 ++
.../development/extensions-core/avro/index.html | 26 ++++
.../extensions-core/azure.html/index.html | 11 ++
.../development/extensions-core/azure/index.html | 26 ++++
.../extensions-core/bloom-filter.html/index.html | 11 ++
.../extensions-core/bloom-filter/index.html | 41 ++++++
.../extensions-core/caffeine-cache.html/index.html | 11 ++
.../datasketches-extension.html/index.html | 11 ++
.../datasketches-extension/index.html | 26 ++++
.../datasketches-hll.html/index.html | 11 ++
.../extensions-core/datasketches-hll/index.html | 32 +++++
.../datasketches-kll.html/index.html | 11 ++
.../extensions-core/datasketches-kll/index.html | 26 ++++
.../datasketches-quantiles.html/index.html | 11 ++
.../datasketches-quantiles/index.html | 26 ++++
.../datasketches-theta.html/index.html | 11 ++
.../extensions-core/datasketches-theta/index.html | 28 ++++
.../datasketches-tuple.html/index.html | 11 ++
.../extensions-core/datasketches-tuple/index.html | 26 ++++
.../extensions-core/druid-aws-rds.html/index.html | 11 ++
.../extensions-core/druid-aws-rds/index.html | 27 ++++
.../druid-basic-security.html/index.html | 11 ++
.../druid-basic-security/index.html | 156 +++++++++++++++++++++
.../extensions-core/druid-kerberos.html/index.html | 11 ++
.../extensions-core/druid-kerberos/index.html | 34 +++++
.../extensions-core/druid-lookups.html/index.html | 11 ++
.../extensions-core/druid-lookups/index.html | 41 ++++++
.../extensions-core/druid-pac4j.html/index.html | 11 ++
.../extensions-core/druid-pac4j/index.html | 28 ++++
.../druid-ranger-security.html/index.html | 11 ++
.../druid-ranger-security/index.html | 26 ++++
.../extensions-core/examples.html/index.html | 11 ++
.../extensions-core/examples/index.html | 26 ++++
.../extensions-core/google.html/index.html | 11 ++
.../development/extensions-core/google/index.html | 28 ++++
.../extensions-core/hdfs.html/index.html | 11 ++
.../development/extensions-core/hdfs/index.html | 48 +++++++
.../kafka-eight-firehose.html/index.html | 11 ++
.../kafka-extraction-namespace.html/index.html | 11 ++
.../kafka-extraction-namespace/index.html | 26 ++++
.../kafka-supervisor-operations.html/index.html | 11 ++
.../kafka-supervisor-reference.html/index.html | 11 ++
.../kinesis-ingestion.html/index.html | 11 ++
.../extensions-core/kubernetes.html/index.html | 11 ++
.../extensions-core/kubernetes/index.html | 30 ++++
.../lookups-cached-global.html/index.html | 11 ++
.../lookups-cached-global/index.html | 44 ++++++
.../extensions-core/mysql.html/index.html | 11 ++
.../development/extensions-core/mysql/index.html | 31 ++++
.../namespaced-lookup.html/index.html | 11 ++
.../extensions-core/orc.html/index.html | 11 ++
.../development/extensions-core/orc/index.html | 38 +++++
.../extensions-core/parquet.html/index.html | 11 ++
.../development/extensions-core/parquet/index.html | 32 +++++
.../extensions-core/postgresql.html/index.html | 11 ++
.../extensions-core/postgresql/index.html | 30 ++++
.../extensions-core/protobuf.html/index.html | 11 ++
.../extensions-core/protobuf/index.html | 28 ++++
.../development/extensions-core/s3.html/index.html | 11 ++
.../development/extensions-core/s3/index.html | 28 ++++
.../simple-client-sslcontext.html/index.html | 11 ++
.../simple-client-sslcontext/index.html | 29 ++++
.../extensions-core/stats.html/index.html | 11 ++
.../development/extensions-core/stats/index.html | 36 +++++
.../extensions-core/test-stats.html/index.html | 11 ++
.../extensions-core/test-stats/index.html | 27 ++++
docs/29.0.0/development/extensions/index.html | 11 ++
docs/29.0.0/development/indexer.html/index.html | 11 ++
.../index.html | 11 ++
docs/29.0.0/development/javascript.html/index.html | 11 ++
docs/29.0.0/development/javascript/index.html | 38 +++++
.../kafka-simple-consumer-firehose.html/index.html | 11 ++
docs/29.0.0/development/modules.html/index.html | 11 ++
docs/29.0.0/development/modules/index.html | 52 +++++++
docs/29.0.0/development/overview.html/index.html | 11 ++
docs/29.0.0/development/overview/index.html | 35 +++++
docs/29.0.0/development/router.html/index.html | 11 ++
.../development/select-query.html/index.html | 11 ++
docs/29.0.0/development/versioning.html/index.html | 11 ++
docs/29.0.0/development/versioning/index.html | 26 ++++
docs/29.0.0/index.html | 11 ++
docs/29.0.0/ingestion.html/index.html | 11 ++
.../ingestion/automatic-compaction.html/index.html | 11 ++
.../ingestion/batch-ingestion.html/index.html | 11 ++
.../command-line-hadoop-indexer.html/index.html | 11 ++
docs/29.0.0/ingestion/compaction.html/index.html | 11 ++
.../concurrent-append-replace.html/index.html | 11 ++
.../ingestion/concurrent-append-replace/index.html | 27 ++++
docs/29.0.0/ingestion/data-formats.html/index.html | 11 ++
docs/29.0.0/ingestion/data-formats/index.html | 112 +++++++++++++++
.../ingestion/data-management.html/index.html | 11 ++
docs/29.0.0/ingestion/delete-data.html/index.html | 11 ++
docs/29.0.0/ingestion/faq.html/index.html | 11 ++
docs/29.0.0/ingestion/faq/index.html | 32 +++++
docs/29.0.0/ingestion/firehose.html/index.html | 11 ++
docs/29.0.0/ingestion/flatten-json.html/index.html | 11 ++
.../hadoop-vs-native-batch.html/index.html | 11 ++
docs/29.0.0/ingestion/hadoop.html/index.html | 11 ++
docs/29.0.0/ingestion/hadoop/index.html | 73 ++++++++++
docs/29.0.0/ingestion/index.html | 35 +++++
.../ingestion/ingestion-spec.html/index.html | 11 ++
docs/29.0.0/ingestion/ingestion-spec/index.html | 81 +++++++++++
docs/29.0.0/ingestion/ingestion.html/index.html | 11 ++
.../29.0.0/ingestion/input-sources.html/index.html | 11 ++
docs/29.0.0/ingestion/input-sources/index.html | 72 ++++++++++
.../ingestion/kafka-ingestion.html/index.html | 11 ++
docs/29.0.0/ingestion/kafka-ingestion/index.html | 39 ++++++
.../ingestion/kinesis-ingestion.html/index.html | 11 ++
docs/29.0.0/ingestion/kinesis-ingestion/index.html | 48 +++++++
.../ingestion/locking-and-priority.html/index.html | 11 ++
.../ingestion/migrate-from-firehose/index.html | 11 ++
docs/29.0.0/ingestion/misc-tasks.html/index.html | 11 ++
.../native-batch-firehose.html/index.html | 11 ++
.../ingestion/native-batch-firehose/index.html | 59 ++++++++
.../native-batch-input-sources.html/index.html | 11 ++
.../native-batch-simple-task.html/index.html | 11 ++
.../ingestion/native-batch-simple-task/index.html | 35 +++++
docs/29.0.0/ingestion/native-batch.html/index.html | 11 ++
docs/29.0.0/ingestion/native-batch/index.html | 101 +++++++++++++
docs/29.0.0/ingestion/native_tasks.html/index.html | 11 ++
docs/29.0.0/ingestion/overview.html/index.html | 11 ++
docs/29.0.0/ingestion/partitioning.html/index.html | 11 ++
docs/29.0.0/ingestion/partitioning/index.html | 30 ++++
.../ingestion/realtime-ingestion.html/index.html | 11 ++
docs/29.0.0/ingestion/reports.html/index.html | 11 ++
docs/29.0.0/ingestion/rollup.html/index.html | 11 ++
docs/29.0.0/ingestion/rollup/index.html | 28 ++++
.../ingestion/schema-changes.html/index.html | 11 ++
.../29.0.0/ingestion/schema-design.html/index.html | 11 ++
docs/29.0.0/ingestion/schema-design/index.html | 110 +++++++++++++++
docs/29.0.0/ingestion/schema-model.html/index.html | 11 ++
docs/29.0.0/ingestion/schema-model/index.html | 31 ++++
.../ingestion/standalone-realtime.html/index.html | 11 ++
.../ingestion/standalone-realtime/index.html | 33 +++++
.../ingestion/stream-ingestion.html/index.html | 11 ++
docs/29.0.0/ingestion/stream-pull.html/index.html | 11 ++
docs/29.0.0/ingestion/stream-push.html/index.html | 11 ++
docs/29.0.0/ingestion/streaming.html/index.html | 11 ++
docs/29.0.0/ingestion/streaming/index.html | 29 ++++
docs/29.0.0/ingestion/supervisor.html/index.html | 11 ++
docs/29.0.0/ingestion/supervisor/index.html | 44 ++++++
docs/29.0.0/ingestion/tasks.html/index.html | 11 ++
docs/29.0.0/ingestion/tasks/index.html | 77 ++++++++++
docs/29.0.0/ingestion/tranquility.html/index.html | 11 ++
docs/29.0.0/ingestion/tranquility/index.html | 31 ++++
.../ingestion/transform-spec.html/index.html | 11 ++
.../ingestion/update-existing-data.html/index.html | 11 ++
docs/29.0.0/misc/cluster-setup.html/index.html | 11 ++
docs/29.0.0/misc/evaluate.html/index.html | 11 ++
docs/29.0.0/misc/math-expr.html/index.html | 11 ++
docs/29.0.0/misc/papers-and-talks.html/index.html | 11 ++
docs/29.0.0/misc/papers-and-talks/index.html | 26 ++++
docs/29.0.0/misc/tasks.html/index.html | 11 ++
docs/29.0.0/multi-stage-query.html/index.html | 11 ++
docs/29.0.0/multi-stage-query/api.html/index.html | 11 ++
.../multi-stage-query/concepts.html/index.html | 11 ++
docs/29.0.0/multi-stage-query/concepts/index.html | 120 ++++++++++++++++
.../multi-stage-query/examples.html/index.html | 11 ++
docs/29.0.0/multi-stage-query/examples/index.html | 28 ++++
docs/29.0.0/multi-stage-query/index.html | 44 ++++++
.../multi-stage-query/known-issues.html/index.html | 11 ++
.../multi-stage-query/known-issues/index.html | 36 +++++
.../multi-stage-query/reference.html/index.html | 11 ++
docs/29.0.0/multi-stage-query/reference/index.html | 82 +++++++++++
.../multi-stage-query/security.html/index.html | 11 ++
docs/29.0.0/multi-stage-query/security/index.html | 37 +++++
docs/29.0.0/operations/alerts.html/index.html | 11 ++
docs/29.0.0/operations/alerts/index.html | 26 ++++
.../operations/api-reference.html/index.html | 11 ++
docs/29.0.0/operations/api-reference/index.html | 11 ++
docs/29.0.0/operations/auth-ldap.html/index.html | 11 ++
docs/29.0.0/operations/auth-ldap/index.html | 27 ++++
docs/29.0.0/operations/auth.html/index.html | 11 ++
docs/29.0.0/operations/auth/index.html | 27 ++++
.../basic-cluster-tuning.html/index.html | 11 ++
.../operations/basic-cluster-tuning/index.html | 28 ++++
.../clean-metadata-store.html/index.html | 11 ++
.../operations/clean-metadata-store/index.html | 39 ++++++
.../deep-storage-migration.html/index.html | 11 ++
.../operations/deep-storage-migration/index.html | 29 ++++
.../operations/druid-console.html/index.html | 11 ++
.../29.0.0/operations/dump-segment.html/index.html | 11 ++
docs/29.0.0/operations/dump-segment/index.html | 41 ++++++
.../operations/durable-storage.html/index.html | 11 ++
docs/29.0.0/operations/durable-storage/index.html | 31 ++++
.../dynamic-config-provider.html/index.html | 11 ++
.../operations/dynamic-config-provider/index.html | 26 ++++
.../operations/export-metadata.html/index.html | 11 ++
docs/29.0.0/operations/export-metadata/index.html | 27 ++++
docs/29.0.0/operations/getting-started/index.html | 11 ++
.../operations/high-availability.html/index.html | 11 ++
.../29.0.0/operations/high-availability/index.html | 33 +++++
.../operations/http-compression.html/index.html | 11 ++
docs/29.0.0/operations/http-compression/index.html | 26 ++++
.../including-extensions.html/index.html | 11 ++
.../insert-segment-to-db.html/index.html | 11 ++
.../operations/insert-segment-to-db/index.html | 38 +++++
docs/29.0.0/operations/java.html/index.html | 11 ++
docs/29.0.0/operations/java/index.html | 46 ++++++
docs/29.0.0/operations/kubernetes.html/index.html | 11 ++
docs/29.0.0/operations/kubernetes/index.html | 26 ++++
.../operations/management-uis.html/index.html | 11 ++
.../operations/metadata-migration.html/index.html | 11 ++
.../operations/metadata-migration/index.html | 30 ++++
docs/29.0.0/operations/metrics.html/index.html | 11 ++
docs/29.0.0/operations/metrics/index.html | 33 +++++
.../migrate-from-firehose.html/index.html | 11 ++
.../operations/migrate-from-firehose/index.html | 27 ++++
.../operations/mixed-workloads.html/index.html | 11 ++
docs/29.0.0/operations/mixed-workloads/index.html | 51 +++++++
.../29.0.0/operations/multitenancy.html/index.html | 11 ++
.../29.0.0/operations/other-hadoop.html/index.html | 11 ++
docs/29.0.0/operations/other-hadoop/index.html | 53 +++++++
.../operations/password-provider.html/index.html | 11 ++
.../29.0.0/operations/password-provider/index.html | 26 ++++
.../operations/performance-faq.html/index.html | 11 ++
docs/29.0.0/operations/pull-deps.html/index.html | 11 ++
docs/29.0.0/operations/pull-deps/index.html | 26 ++++
.../operations/recommendations.html/index.html | 11 ++
.../operations/request-logging.html/index.html | 11 ++
docs/29.0.0/operations/request-logging/index.html | 36 +++++
.../operations/reset-cluster.html/index.html | 11 ++
docs/29.0.0/operations/reset-cluster/index.html | 30 ++++
.../operations/rolling-updates.html/index.html | 11 ++
docs/29.0.0/operations/rolling-updates/index.html | 48 +++++++
.../operations/rule-configuration.html/index.html | 11 ++
.../operations/rule-configuration/index.html | 26 ++++
.../operations/security-overview.html/index.html | 11 ++
.../29.0.0/operations/security-overview/index.html | 32 +++++
.../operations/security-user-auth.html/index.html | 11 ++
.../operations/security-user-auth/index.html | 33 +++++
.../segment-optimization.html/index.html | 11 ++
.../operations/segment-optimization/index.html | 57 ++++++++
.../operations/single-server.html/index.html | 11 ++
docs/29.0.0/operations/single-server/index.html | 29 ++++
docs/29.0.0/operations/tls-support.html/index.html | 11 ++
docs/29.0.0/operations/tls-support/index.html | 41 ++++++
.../use_sbt_to_build_fat_jar.html/index.html | 11 ++
.../operations/use_sbt_to_build_fat_jar/index.html | 26 ++++
docs/29.0.0/operations/web-console.html/index.html | 11 ++
docs/29.0.0/operations/web-console/index.html | 52 +++++++
docs/29.0.0/querying.html/index.html | 11 ++
docs/29.0.0/querying/aggregations.html/index.html | 11 ++
docs/29.0.0/querying/aggregations/index.html | 43 ++++++
docs/29.0.0/querying/arrays.html/index.html | 11 ++
docs/29.0.0/querying/arrays/index.html | 28 ++++
docs/29.0.0/querying/caching.html/index.html | 11 ++
docs/29.0.0/querying/caching/index.html | 26 ++++
docs/29.0.0/querying/datasource.html/index.html | 11 ++
docs/29.0.0/querying/datasource/index.html | 91 ++++++++++++
.../datasourcemetadataquery.html/index.html | 11 ++
.../querying/datasourcemetadataquery/index.html | 28 ++++
.../29.0.0/querying/dimensionspecs.html/index.html | 11 ++
docs/29.0.0/querying/dimensionspecs/index.html | 78 +++++++++++
docs/29.0.0/querying/filters.html/index.html | 11 ++
docs/29.0.0/querying/filters/index.html | 47 +++++++
docs/29.0.0/querying/geo.html/index.html | 11 ++
docs/29.0.0/querying/geo/index.html | 33 +++++
docs/29.0.0/querying/granularities.html/index.html | 11 ++
docs/29.0.0/querying/granularities/index.html | 36 +++++
docs/29.0.0/querying/groupbyquery.html/index.html | 11 ++
docs/29.0.0/querying/groupbyquery/index.html | 80 +++++++++++
docs/29.0.0/querying/having.html/index.html | 11 ++
docs/29.0.0/querying/having/index.html | 35 +++++
docs/29.0.0/querying/hll-old.html/index.html | 11 ++
docs/29.0.0/querying/hll-old/index.html | 35 +++++
docs/29.0.0/querying/index.html | 40 ++++++
docs/29.0.0/querying/joins.html/index.html | 11 ++
docs/29.0.0/querying/joins/index.html | 35 +++++
docs/29.0.0/querying/limitspec.html/index.html | 11 ++
docs/29.0.0/querying/limitspec/index.html | 34 +++++
docs/29.0.0/querying/lookups.html/index.html | 11 ++
docs/29.0.0/querying/lookups/index.html | 75 ++++++++++
docs/29.0.0/querying/math-expr.html/index.html | 11 ++
docs/29.0.0/querying/math-expr/index.html | 33 +++++
.../multi-value-dimensions.html/index.html | 11 ++
.../querying/multi-value-dimensions/index.html | 47 +++++++
docs/29.0.0/querying/multitenancy.html/index.html | 11 ++
docs/29.0.0/querying/multitenancy/index.html | 49 +++++++
.../29.0.0/querying/nested-columns.html/index.html | 11 ++
docs/29.0.0/querying/nested-columns/index.html | 26 ++++
docs/29.0.0/querying/optimizations.html/index.html | 11 ++
.../querying/post-aggregations.html/index.html | 11 ++
docs/29.0.0/querying/post-aggregations/index.html | 35 +++++
docs/29.0.0/querying/query-context.html/index.html | 11 ++
docs/29.0.0/querying/query-context/index.html | 37 +++++
.../querying/query-deep-storage.html/index.html | 11 ++
docs/29.0.0/querying/query-deep-storage/index.html | 26 ++++
.../querying/query-execution.html/index.html | 11 ++
docs/29.0.0/querying/query-execution/index.html | 66 +++++++++
.../querying/query-processing.html/index.html | 11 ++
docs/29.0.0/querying/query-processing/index.html | 26 ++++
docs/29.0.0/querying/scan-query.html/index.html | 11 ++
docs/29.0.0/querying/scan-query/index.html | 56 ++++++++
docs/29.0.0/querying/searchquery.html/index.html | 11 ++
docs/29.0.0/querying/searchquery/index.html | 38 +++++
.../querying/searchqueryspec.html/index.html | 11 ++
.../querying/segmentmetadataquery.html/index.html | 11 ++
.../querying/segmentmetadataquery/index.html | 46 ++++++
docs/29.0.0/querying/select-query.html/index.html | 11 ++
docs/29.0.0/querying/select-query/index.html | 26 ++++
.../29.0.0/querying/sorting-orders.html/index.html | 11 ++
docs/29.0.0/querying/sorting-orders/index.html | 29 ++++
.../querying/sql-aggregations.html/index.html | 11 ++
docs/29.0.0/querying/sql-aggregations/index.html | 35 +++++
docs/29.0.0/querying/sql-api.html/index.html | 11 ++
.../querying/sql-array-functions.html/index.html | 11 ++
.../29.0.0/querying/sql-array-functions/index.html | 31 ++++
.../29.0.0/querying/sql-data-types.html/index.html | 11 ++
docs/29.0.0/querying/sql-data-types/index.html | 63 +++++++++
docs/29.0.0/querying/sql-functions.html/index.html | 11 ++
docs/29.0.0/querying/sql-functions/index.html | 29 ++++
docs/29.0.0/querying/sql-jdbc.html/index.html | 11 ++
.../querying/sql-json-functions.html/index.html | 11 ++
docs/29.0.0/querying/sql-json-functions/index.html | 26 ++++
.../querying/sql-metadata-tables.html/index.html | 11 ++
.../29.0.0/querying/sql-metadata-tables/index.html | 37 +++++
.../index.html | 11 ++
.../sql-multivalue-string-functions/index.html | 33 +++++
docs/29.0.0/querying/sql-operators.html/index.html | 11 ++
docs/29.0.0/querying/sql-operators/index.html | 30 ++++
.../querying/sql-query-context.html/index.html | 11 ++
docs/29.0.0/querying/sql-query-context/index.html | 29 ++++
docs/29.0.0/querying/sql-scalar.html/index.html | 11 ++
docs/29.0.0/querying/sql-scalar/index.html | 53 +++++++
.../querying/sql-translation.html/index.html | 11 ++
docs/29.0.0/querying/sql-translation/index.html | 88 ++++++++++++
.../querying/sql-window-functions.html/index.html | 11 ++
.../querying/sql-window-functions/index.html | 29 ++++
docs/29.0.0/querying/sql.html/index.html | 11 ++
docs/29.0.0/querying/sql/index.html | 80 +++++++++++
.../querying/timeboundaryquery.html/index.html | 11 ++
docs/29.0.0/querying/timeboundaryquery/index.html | 28 ++++
.../querying/timeseriesquery.html/index.html | 11 ++
docs/29.0.0/querying/timeseriesquery/index.html | 36 +++++
.../querying/tips-good-queries.html/index.html | 11 ++
docs/29.0.0/querying/tips-good-queries/index.html | 28 ++++
.../29.0.0/querying/topnmetricspec.html/index.html | 11 ++
docs/29.0.0/querying/topnmetricspec/index.html | 28 ++++
docs/29.0.0/querying/topnquery.html/index.html | 11 ++
docs/29.0.0/querying/topnquery/index.html | 35 +++++
.../querying/troubleshooting.html/index.html | 11 ++
docs/29.0.0/querying/troubleshooting/index.html | 34 +++++
docs/29.0.0/querying/using-caching.html/index.html | 11 ++
docs/29.0.0/querying/using-caching/index.html | 26 ++++
.../querying/virtual-columns.html/index.html | 11 ++
docs/29.0.0/querying/virtual-columns/index.html | 37 +++++
.../release-info/release-notes.html/index.html | 11 ++
docs/29.0.0/release-info/release-notes/index.html | 27 ++++
.../release-info/upgrade-notes.html/index.html | 11 ++
docs/29.0.0/release-info/upgrade-notes/index.html | 48 +++++++
docs/29.0.0/tutorials.html/index.html | 11 ++
.../booting-a-production-cluster.html/index.html | 11 ++
docs/29.0.0/tutorials/cluster.html/index.html | 11 ++
docs/29.0.0/tutorials/cluster/index.html | 56 ++++++++
docs/29.0.0/tutorials/docker.html/index.html | 11 ++
docs/29.0.0/tutorials/docker/index.html | 28 ++++
docs/29.0.0/tutorials/examples.html/index.html | 11 ++
docs/29.0.0/tutorials/firewall.html/index.html | 11 ++
docs/29.0.0/tutorials/index.html | 38 +++++
.../tutorials/ingestion-streams.html/index.html | 11 ++
docs/29.0.0/tutorials/ingestion.html/index.html | 11 ++
docs/29.0.0/tutorials/quickstart.html/index.html | 11 ++
.../tutorial-a-first-look-at-druid.html/index.html | 11 ++
.../tutorial-all-about-queries.html/index.html | 11 ++
.../tutorial-batch-hadoop.html/index.html | 11 ++
.../tutorials/tutorial-batch-hadoop/index.html | 29 ++++
.../tutorial-batch-native.html/index.html | 11 ++
.../tutorials/tutorial-batch-native/index.html | 43 ++++++
.../tutorials/tutorial-batch.html/index.html | 11 ++
docs/29.0.0/tutorials/tutorial-batch/index.html | 30 ++++
.../tutorials/tutorial-compaction.html/index.html | 11 ++
.../tutorials/tutorial-compaction/index.html | 34 +++++
.../tutorials/tutorial-delete-data.html/index.html | 11 ++
.../tutorials/tutorial-delete-data/index.html | 30 ++++
.../tutorial-ingestion-spec.html/index.html | 11 ++
.../tutorials/tutorial-ingestion-spec/index.html | 27 ++++
.../29.0.0/tutorials/tutorial-jdbc.html/index.html | 11 ++
docs/29.0.0/tutorials/tutorial-jdbc/index.html | 26 ++++
.../tutorials/tutorial-kafka.html/index.html | 11 ++
docs/29.0.0/tutorials/tutorial-kafka/index.html | 27 ++++
.../tutorial-kerberos-hadoop.html/index.html | 11 ++
.../tutorials/tutorial-kerberos-hadoop/index.html | 30 ++++
.../tutorial-loading-batch-data.html/index.html | 11 ++
.../index.html | 11 ++
.../tutorial-msq-convert-spec.html/index.html | 11 ++
.../tutorials/tutorial-msq-convert-spec/index.html | 29 ++++
.../tutorials/tutorial-msq-extern.html/index.html | 11 ++
.../tutorials/tutorial-msq-extern/index.html | 31 ++++
.../tutorial-query-deep-storage.html/index.html | 11 ++
.../tutorial-query-deep-storage/index.html | 26 ++++
.../tutorials/tutorial-query.html/index.html | 11 ++
docs/29.0.0/tutorials/tutorial-query/index.html | 47 +++++++
.../tutorials/tutorial-retention.html/index.html | 11 ++
.../29.0.0/tutorials/tutorial-retention/index.html | 28 ++++
.../tutorials/tutorial-rollup.html/index.html | 11 ++
docs/29.0.0/tutorials/tutorial-rollup/index.html | 27 ++++
.../tutorial-sketches-theta.html/index.html | 11 ++
.../tutorials/tutorial-sketches-theta/index.html | 34 +++++
.../tutorial-sql-query-view.html/index.html | 11 ++
.../tutorials/tutorial-sql-query-view/index.html | 26 ++++
.../tutorial-the-druid-cluster.html/index.html | 11 ++
.../tutorials/tutorial-tranquility.html/index.html | 11 ++
.../tutorial-transform-spec.html/index.html | 11 ++
.../tutorials/tutorial-transform-spec/index.html | 27 ++++
.../tutorial-unnest-arrays.html/index.html | 11 ++
.../tutorials/tutorial-unnest-arrays/index.html | 26 ++++
.../tutorials/tutorial-update-data.html/index.html | 11 ++
.../tutorials/tutorial-update-data/index.html | 31 ++++
.../automatic-compaction-api/index.html | 10 +-
.../api-reference/data-management-api/index.html | 37 +++--
.../dynamic-configuration-api/index.html | 23 +--
docs/latest/api-reference/index.html | 8 +-
.../api-reference/json-querying-api/index.html | 8 +-
.../api-reference/legacy-metadata-api/index.html | 16 +--
docs/latest/api-reference/lookups-api/index.html | 8 +-
.../api-reference/retention-rules-api/index.html | 8 +-
.../api-reference/service-status-api/index.html | 8 +-
docs/latest/api-reference/sql-api/index.html | 12 +-
.../api-reference/sql-ingestion-api/index.html | 10 +-
docs/latest/api-reference/sql-jdbc/index.html | 10 +-
.../latest/api-reference/supervisor-api/index.html | 21 +--
docs/latest/api-reference/tasks-api/index.html | 8 +-
.../comparisons/druid-vs-elasticsearch/index.html | 8 +-
.../comparisons/druid-vs-key-value/index.html | 8 +-
docs/latest/comparisons/druid-vs-kudu/index.html | 8 +-
.../comparisons/druid-vs-redshift/index.html | 8 +-
docs/latest/comparisons/druid-vs-spark/index.html | 8 +-
.../comparisons/druid-vs-sql-on-hadoop/index.html | 8 +-
docs/latest/configuration/extensions/index.html | 16 +--
.../configuration/human-readable-byte/index.html | 8 +-
docs/latest/configuration/index.html | 112 +++++++--------
docs/latest/configuration/logging/index.html | 8 +-
.../automatic-compaction/index.html | 15 +-
docs/latest/data-management/compaction/index.html | 12 +-
docs/latest/data-management/delete/index.html | 14 +-
docs/latest/data-management/index.html | 10 +-
.../data-management/manual-compaction/index.html | 8 +-
.../data-management/schema-changes/index.html | 10 +-
docs/latest/data-management/update/index.html | 10 +-
docs/latest/design/architecture/index.html | 119 ++--------------
docs/latest/design/broker/index.html | 15 +-
docs/latest/design/coordinator/index.html | 41 +++---
docs/latest/design/deep-storage/index.html | 12 +-
.../extensions-contrib/dropwizard/index.html | 8 +-
docs/latest/design/historical/index.html | 15 +-
docs/latest/design/index.html | 8 +-
docs/latest/design/indexer/index.html | 15 +-
docs/latest/design/indexing-service/index.html | 8 +-
docs/latest/design/metadata-storage/index.html | 10 +-
docs/latest/design/middlemanager/index.html | 14 +-
docs/latest/design/overlord/index.html | 18 +--
docs/latest/design/peons/index.html | 16 +--
docs/latest/design/processes.html/index.html | 6 +-
docs/latest/design/processes/index.html | 39 ------
docs/latest/design/router/index.html | 27 ++--
docs/latest/design/segments/index.html | 14 +-
docs/latest/design/storage.html/index.html | 11 ++
docs/latest/design/storage/index.html | 36 +++++
docs/latest/design/zookeeper/index.html | 10 +-
docs/latest/development/build/index.html | 8 +-
.../kafka-simple.html/index.html | 6 +-
.../community-extensions/rabbitmq.html/index.html | 6 +-
.../development/contribute-to-docs/index.html | 15 +-
.../experimental-features.html/index.html | 11 --
.../development/experimental-features/index.html | 26 ----
docs/latest/development/experimental/index.html | 8 +-
.../extensions-contrib/aliyun-oss/index.html | 8 +-
.../ambari-metrics-emitter/index.html | 8 +-
.../extensions-contrib/cassandra/index.html | 8 +-
.../extensions-contrib/cloudfiles/index.html | 8 +-
.../compressed-big-decimal/index.html | 8 +-
.../ddsketch-quantiles.html/index.html | 11 ++
.../ddsketch-quantiles/index.html | 26 ++++
.../extensions-contrib/delta-lake.html/index.html | 11 ++
.../extensions-contrib/delta-lake/index.html | 32 +++++
.../extensions-contrib/distinctcount/index.html | 8 +-
.../extensions-contrib/gce-extensions/index.html | 8 +-
.../extensions-contrib/graphite/index.html | 8 +-
.../extensions-contrib/iceberg/index.html | 11 +-
.../extensions-contrib/influx/index.html | 8 +-
.../extensions-contrib/influxdb-emitter/index.html | 8 +-
.../extensions-contrib/k8s-jobs/index.html | 10 +-
.../extensions-contrib/kafka-emitter/index.html | 8 +-
.../materialized-view/index.html | 8 +-
.../momentsketch-quantiles/index.html | 8 +-
.../moving-average-query/index.html | 8 +-
.../extensions-contrib/opentsdb-emitter/index.html | 8 +-
.../extensions-contrib/prometheus/index.html | 12 +-
.../extensions-contrib/redis-cache/index.html | 8 +-
.../spectator-histogram.html/index.html | 11 ++
.../spectator-histogram/index.html | 93 ++++++++++++
.../extensions-contrib/sqlserver/index.html | 8 +-
.../extensions-contrib/statsd/index.html | 12 +-
.../tdigestsketch-quantiles/index.html | 8 +-
.../extensions-contrib/thrift/index.html | 8 +-
.../extensions-contrib/time-min-max/index.html | 8 +-
.../approximate-histograms/index.html | 8 +-
.../development/extensions-core/avro/index.html | 8 +-
.../development/extensions-core/azure/index.html | 10 +-
.../extensions-core/bloom-filter/index.html | 8 +-
.../datasketches-extension/index.html | 8 +-
.../extensions-core/datasketches-hll/index.html | 8 +-
.../extensions-core/datasketches-kll/index.html | 8 +-
.../datasketches-quantiles/index.html | 8 +-
.../extensions-core/datasketches-theta/index.html | 8 +-
.../extensions-core/datasketches-tuple/index.html | 8 +-
.../extensions-core/druid-aws-rds/index.html | 8 +-
.../druid-basic-security/index.html | 8 +-
.../extensions-core/druid-kerberos/index.html | 8 +-
.../extensions-core/druid-lookups/index.html | 8 +-
.../extensions-core/druid-pac4j/index.html | 8 +-
.../druid-ranger-security/index.html | 8 +-
.../extensions-core/examples/index.html | 8 +-
.../development/extensions-core/google/index.html | 8 +-
.../development/extensions-core/hdfs/index.html | 8 +-
.../kafka-extraction-namespace/index.html | 8 +-
.../kafka-ingestion.html/index.html | 11 --
.../extensions-core/kafka-ingestion/index.html | 32 -----
.../kafka-supervisor-operations.html/index.html | 6 +-
.../kafka-supervisor-operations/index.html | 113 ---------------
.../kafka-supervisor-reference.html/index.html | 6 +-
.../kafka-supervisor-reference/index.html | 39 ------
.../kinesis-ingestion.html/index.html | 6 +-
.../extensions-core/kinesis-ingestion/index.html | 93 ------------
.../extensions-core/kubernetes/index.html | 8 +-
.../lookups-cached-global/index.html | 12 +-
.../development/extensions-core/mysql/index.html | 8 +-
.../development/extensions-core/orc/index.html | 8 +-
.../development/extensions-core/parquet/index.html | 8 +-
.../extensions-core/postgresql/index.html | 8 +-
.../extensions-core/protobuf/index.html | 10 +-
.../development/extensions-core/s3/index.html | 8 +-
.../simple-client-sslcontext/index.html | 8 +-
.../development/extensions-core/stats/index.html | 8 +-
.../extensions-core/test-stats/index.html | 8 +-
docs/latest/development/javascript/index.html | 8 +-
.../kafka-simple-consumer-firehose.html/index.html | 6 +-
docs/latest/development/modules/index.html | 10 +-
docs/latest/development/overview/index.html | 8 +-
docs/latest/development/versioning/index.html | 8 +-
.../concurrent-append-replace.html/index.html | 11 ++
.../ingestion/concurrent-append-replace/index.html | 27 ++++
docs/latest/ingestion/data-formats/index.html | 26 ++--
docs/latest/ingestion/faq/index.html | 12 +-
docs/latest/ingestion/hadoop/index.html | 10 +-
docs/latest/ingestion/index.html | 16 +--
docs/latest/ingestion/ingestion-spec/index.html | 20 +--
docs/latest/ingestion/input-sources/index.html | 31 ++--
.../ingestion/kafka-ingestion.html/index.html | 11 ++
docs/latest/ingestion/kafka-ingestion/index.html | 39 ++++++
.../ingestion/kinesis-ingestion.html/index.html | 11 ++
docs/latest/ingestion/kinesis-ingestion/index.html | 48 +++++++
.../ingestion/native-batch-firehose/index.html | 8 +-
.../ingestion/native-batch-simple-task/index.html | 8 +-
docs/latest/ingestion/native-batch/index.html | 66 ++++-----
docs/latest/ingestion/partitioning/index.html | 12 +-
docs/latest/ingestion/rollup/index.html | 12 +-
docs/latest/ingestion/schema-design/index.html | 17 ++-
docs/latest/ingestion/schema-model/index.html | 10 +-
.../ingestion/standalone-realtime/index.html | 12 +-
docs/latest/ingestion/streaming.html/index.html | 11 ++
docs/latest/ingestion/streaming/index.html | 29 ++++
docs/latest/ingestion/supervisor.html/index.html | 11 ++
docs/latest/ingestion/supervisor/index.html | 44 ++++++
docs/latest/ingestion/tasks/index.html | 16 +--
docs/latest/ingestion/tranquility/index.html | 12 +-
docs/latest/misc/papers-and-talks/index.html | 8 +-
docs/latest/multi-stage-query/concepts/index.html | 22 +--
docs/latest/multi-stage-query/examples/index.html | 12 +-
docs/latest/multi-stage-query/index.html | 10 +-
.../multi-stage-query/known-issues/index.html | 19 ++-
docs/latest/multi-stage-query/reference/index.html | 30 ++--
docs/latest/multi-stage-query/security/index.html | 12 +-
docs/latest/operations/alerts/index.html | 8 +-
docs/latest/operations/auth-ldap/index.html | 8 +-
docs/latest/operations/auth/index.html | 8 +-
.../operations/basic-cluster-tuning/index.html | 10 +-
.../operations/clean-metadata-store/index.html | 12 +-
.../operations/deep-storage-migration/index.html | 8 +-
docs/latest/operations/dump-segment/index.html | 8 +-
docs/latest/operations/durable-storage/index.html | 10 +-
.../operations/dynamic-config-provider/index.html | 10 +-
docs/latest/operations/export-metadata/index.html | 8 +-
.../latest/operations/high-availability/index.html | 8 +-
docs/latest/operations/http-compression/index.html | 8 +-
.../operations/insert-segment-to-db/index.html | 8 +-
docs/latest/operations/java/index.html | 8 +-
docs/latest/operations/kubernetes/index.html | 8 +-
.../operations/metadata-migration/index.html | 8 +-
docs/latest/operations/metrics/index.html | 14 +-
.../operations/migrate-from-firehose/index.html | 8 +-
docs/latest/operations/mixed-workloads/index.html | 10 +-
docs/latest/operations/other-hadoop/index.html | 8 +-
.../latest/operations/password-provider/index.html | 8 +-
docs/latest/operations/pull-deps/index.html | 10 +-
docs/latest/operations/request-logging/index.html | 8 +-
docs/latest/operations/reset-cluster/index.html | 8 +-
docs/latest/operations/rolling-updates/index.html | 10 +-
.../operations/rule-configuration/index.html | 10 +-
.../latest/operations/security-overview/index.html | 11 +-
.../operations/security-user-auth/index.html | 8 +-
.../operations/segment-optimization/index.html | 8 +-
docs/latest/operations/single-server/index.html | 8 +-
docs/latest/operations/tls-support/index.html | 8 +-
.../operations/use_sbt_to_build_fat_jar/index.html | 8 +-
docs/latest/operations/web-console/index.html | 10 +-
docs/latest/querying/aggregations/index.html | 15 +-
docs/latest/querying/arrays/index.html | 12 +-
docs/latest/querying/caching/index.html | 10 +-
docs/latest/querying/datasource/index.html | 37 ++---
.../querying/datasourcemetadataquery/index.html | 10 +-
docs/latest/querying/dimensionspecs/index.html | 12 +-
docs/latest/querying/filters/index.html | 22 +--
docs/latest/querying/geo/index.html | 10 +-
docs/latest/querying/granularities/index.html | 10 +-
docs/latest/querying/groupbyquery/index.html | 12 +-
docs/latest/querying/having/index.html | 10 +-
docs/latest/querying/hll-old/index.html | 8 +-
docs/latest/querying/index.html | 12 +-
docs/latest/querying/joins/index.html | 10 +-
docs/latest/querying/limitspec/index.html | 10 +-
docs/latest/querying/lookups/index.html | 59 +++++---
docs/latest/querying/math-expr/index.html | 14 +-
.../querying/multi-value-dimensions/index.html | 14 +-
docs/latest/querying/multitenancy/index.html | 10 +-
docs/latest/querying/nested-columns/index.html | 10 +-
docs/latest/querying/post-aggregations/index.html | 10 +-
docs/latest/querying/query-context/index.html | 15 +-
docs/latest/querying/query-deep-storage/index.html | 10 +-
docs/latest/querying/query-execution/index.html | 12 +-
.../querying/query-processing.html/index.html | 11 ++
docs/latest/querying/query-processing/index.html | 26 ++++
docs/latest/querying/scan-query/index.html | 10 +-
docs/latest/querying/searchquery/index.html | 14 +-
.../querying/segmentmetadataquery/index.html | 10 +-
docs/latest/querying/select-query/index.html | 8 +-
docs/latest/querying/sorting-orders/index.html | 10 +-
docs/latest/querying/sql-aggregations/index.html | 12 +-
.../latest/querying/sql-array-functions/index.html | 12 +-
docs/latest/querying/sql-data-types/index.html | 29 ++--
docs/latest/querying/sql-functions/index.html | 14 +-
docs/latest/querying/sql-json-functions/index.html | 10 +-
.../latest/querying/sql-metadata-tables/index.html | 14 +-
.../sql-multivalue-string-functions/index.html | 12 +-
docs/latest/querying/sql-operators/index.html | 12 +-
docs/latest/querying/sql-query-context/index.html | 12 +-
docs/latest/querying/sql-scalar/index.html | 16 +--
docs/latest/querying/sql-translation/index.html | 10 +-
.../querying/sql-window-functions/index.html | 10 +-
docs/latest/querying/sql/index.html | 17 +--
docs/latest/querying/timeboundaryquery/index.html | 10 +-
docs/latest/querying/timeseriesquery/index.html | 12 +-
docs/latest/querying/tips-good-queries/index.html | 11 +-
docs/latest/querying/topnmetricspec/index.html | 10 +-
docs/latest/querying/topnquery/index.html | 10 +-
docs/latest/querying/troubleshooting/index.html | 10 +-
docs/latest/querying/using-caching/index.html | 10 +-
docs/latest/querying/virtual-columns/index.html | 10 +-
docs/latest/release-info/release-notes/index.html | 62 +-------
docs/latest/release-info/upgrade-notes/index.html | 14 +-
docs/latest/tutorials/cluster/index.html | 14 +-
docs/latest/tutorials/docker/index.html | 12 +-
docs/latest/tutorials/index.html | 20 +--
.../tutorials/tutorial-batch-hadoop/index.html | 12 +-
.../tutorials/tutorial-batch-native/index.html | 8 +-
docs/latest/tutorials/tutorial-batch/index.html | 10 +-
.../tutorials/tutorial-compaction/index.html | 10 +-
.../tutorials/tutorial-delete-data/index.html | 10 +-
.../tutorials/tutorial-ingestion-spec/index.html | 12 +-
docs/latest/tutorials/tutorial-jdbc/index.html | 10 +-
.../tutorial-jupyter-docker.html/index.html | 11 --
.../tutorials/tutorial-jupyter-docker/index.html | 53 -------
.../tutorial-jupyter-index.html/index.html | 11 --
.../tutorials/tutorial-jupyter-index/index.html | 40 ------
docs/latest/tutorials/tutorial-kafka/index.html | 12 +-
.../tutorials/tutorial-kerberos-hadoop/index.html | 10 +-
.../tutorials/tutorial-msq-convert-spec/index.html | 10 +-
.../tutorials/tutorial-msq-extern/index.html | 10 +-
.../tutorial-query-deep-storage/index.html | 10 +-
docs/latest/tutorials/tutorial-query/index.html | 10 +-
.../latest/tutorials/tutorial-retention/index.html | 10 +-
docs/latest/tutorials/tutorial-rollup/index.html | 12 +-
.../tutorials/tutorial-sketches-theta/index.html | 10 +-
.../tutorials/tutorial-sql-query-view/index.html | 10 +-
.../tutorials/tutorial-transform-spec/index.html | 10 +-
.../tutorials/tutorial-unnest-arrays/index.html | 10 +-
.../tutorials/tutorial-update-data/index.html | 10 +-
downloads/index.html | 12 +-
druid-powered/index.html | 8 +-
faq/index.html | 8 +-
index.html | 10 +-
js/version.js | 8 +-
libraries/index.html | 8 +-
licensing/index.html | 8 +-
lunr-index-1707892731880.json | 1 -
lunr-index-1708491193450.json | 1 +
lunr-index-1708491258403.json | 1 +
lunr-index.json | 2 +-
search-doc-1707892731880.json | 1 -
search-doc-1708491193450.json | 1 +
search-doc-1708491258403.json | 1 +
search-doc.json | 2 +-
sitemap.xml | 2 +-
technology/index.html | 8 +-
use-cases/index.html | 8 +-
1301 files changed, 15822 insertions(+), 2152 deletions(-)
diff --git a/404.html b/404.html
index 9deefd011..f994ebc13 100644
--- a/404.html
+++ b/404.html
@@ -14,13 +14,13 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.5bfad63a.js" as="script">
-<link rel="preload" href="/assets/js/main.d6cc924f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.06837abf.js" as="script">
+<link rel="preload" href="/assets/js/main.66359c18.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
-<script src="/assets/js/runtime~main.5bfad63a.js"></script>
-<script src="/assets/js/main.d6cc924f.js"></script>
+<script src="/assets/js/runtime~main.06837abf.js"></script>
+<script src="/assets/js/main.66359c18.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/assets/images/druid-architecture-7db1cd79d2d70b2e5ccc73b6bebfcaa4.svg b/assets/images/druid-architecture-7db1cd79d2d70b2e5ccc73b6bebfcaa4.svg
new file mode 100644
index 000000000..3f86a412c
--- /dev/null
+++ b/assets/images/druid-architecture-7db1cd79d2d70b2e5ccc73b6bebfcaa4.svg
@@ -0,0 +1,19 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:lucid="lucid" width="1967.24" height="864.83"><g transform="translate(5341 -19.5)" lucid:page-tab-id="0_0"><path d="M-5320 166a6 6 0 0 1 6-6h508a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6h-508a6 6 0 0 1-6-6zM-4640 166a6 6 0 0 1 6-6h508a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6h-508a6 6 0 0 1-6-6zM-3960 166a6 6 0 0 1 6-6h508a6 6 0 0 1 6 6v308a6 6 0 0 1-6 6h-508a6 6 0 0 1-6-6z" stroke="#cfe4ff" stroke-width="2" fill="#cfe4 [...]
diff --git a/assets/images/spectator-histogram-size-comparison-665af4720d1b302515a31f758b824f26.png b/assets/images/spectator-histogram-size-comparison-665af4720d1b302515a31f758b824f26.png
new file mode 100644
index 000000000..306f45abd
Binary files /dev/null and b/assets/images/spectator-histogram-size-comparison-665af4720d1b302515a31f758b824f26.png differ
diff --git a/assets/images/supervisor-info-dialog-300a1e58533b10622fd945eca74911e4.png b/assets/images/supervisor-info-dialog-300a1e58533b10622fd945eca74911e4.png
new file mode 100644
index 000000000..3be424a41
Binary files /dev/null and b/assets/images/supervisor-info-dialog-300a1e58533b10622fd945eca74911e4.png differ
diff --git a/assets/images/supervisor-view-83f761c82cf23094ae3d37c91371b655.png b/assets/images/supervisor-view-83f761c82cf23094ae3d37c91371b655.png
new file mode 100644
index 000000000..e3100cdd3
Binary files /dev/null and b/assets/images/supervisor-view-83f761c82cf23094ae3d37c91371b655.png differ
diff --git a/assets/js/008dc6c0.b0c66dc0.js b/assets/js/008dc6c0.b0c66dc0.js
new file mode 100644
index 000000000..75b19f3b9
--- /dev/null
+++ b/assets/js/008dc6c0.b0c66dc0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[855],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/01019b7b.df2cb240.js b/assets/js/01019b7b.df2cb240.js
new file mode 100644
index 000000000..47eb856c0
--- /dev/null
+++ b/assets/js/01019b7b.df2cb240.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3079],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>h});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/0109f7c7.93e682ec.js b/assets/js/0109f7c7.93e682ec.js
new file mode 100644
index 000000000..dd817136d
--- /dev/null
+++ b/assets/js/0109f7c7.93e682ec.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6819],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/035ed994.9be30588.js b/assets/js/035ed994.9be30588.js
new file mode 100644
index 000000000..7386d43a3
--- /dev/null
+++ b/assets/js/035ed994.9be30588.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2159],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/04d4205e.e446f8af.js b/assets/js/04d4205e.e446f8af.js
new file mode 100644
index 000000000..9d4c151ee
--- /dev/null
+++ b/assets/js/04d4205e.e446f8af.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6941],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/054cf69c.a19e6887.js b/assets/js/054cf69c.a19e6887.js
new file mode 100644
index 000000000..7378f3b33
--- /dev/null
+++ b/assets/js/054cf69c.a19e6887.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9893],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/0591e968.777c48ed.js b/assets/js/0591e968.777c48ed.js
new file mode 100644
index 000000000..9e368747d
--- /dev/null
+++ b/assets/js/0591e968.777c48ed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1433],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/05b5ec86.39aa10f5.js b/assets/js/05b5ec86.39aa10f5.js
new file mode 100644
index 000000000..cf732086c
--- /dev/null
+++ b/assets/js/05b5ec86.39aa10f5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[172],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/05f6bd73.c0989214.js b/assets/js/05f6bd73.c0989214.js
new file mode 100644
index 000000000..50ddbe184
--- /dev/null
+++ b/assets/js/05f6bd73.c0989214.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6165],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/06621b6d.0e734d5e.js b/assets/js/06621b6d.0e734d5e.js
new file mode 100644
index 000000000..62e1aaa0a
--- /dev/null
+++ b/assets/js/06621b6d.0e734d5e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3560],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/06bb6c62.00830217.js b/assets/js/06bb6c62.00830217.js
new file mode 100644
index 000000000..9e4487922
--- /dev/null
+++ b/assets/js/06bb6c62.00830217.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8337],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>N});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/077bf22c.dec23d2d.js b/assets/js/077bf22c.dec23d2d.js
new file mode 100644
index 000000000..3c058233b
--- /dev/null
+++ b/assets/js/077bf22c.dec23d2d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9202],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0ae1be71.8612a9e1.js b/assets/js/0ae1be71.8612a9e1.js
new file mode 100644
index 000000000..b6f81e1bf
--- /dev/null
+++ b/assets/js/0ae1be71.8612a9e1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1309],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0bbc3844.d72f316b.js b/assets/js/0bbc3844.d72f316b.js
new file mode 100644
index 000000000..c8d2ca10c
--- /dev/null
+++ b/assets/js/0bbc3844.d72f316b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7767],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>h});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0c347cbc.ead87b74.js b/assets/js/0c347cbc.ead87b74.js
new file mode 100644
index 000000000..7fd025b64
--- /dev/null
+++ b/assets/js/0c347cbc.ead87b74.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6811],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0c5549ae.4c422e24.js b/assets/js/0c5549ae.4c422e24.js
new file mode 100644
index 000000000..97069f52f
--- /dev/null
+++ b/assets/js/0c5549ae.4c422e24.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2704],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0c83841d.036feb48.js b/assets/js/0c83841d.036feb48.js
new file mode 100644
index 000000000..e08f27408
--- /dev/null
+++ b/assets/js/0c83841d.036feb48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8110],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0c870731.50a1526a.js b/assets/js/0c870731.50a1526a.js
new file mode 100644
index 000000000..810ebec4c
--- /dev/null
+++ b/assets/js/0c870731.50a1526a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6850],{3905:(t,e,n)=>{n.d(e,{Zo:()=>s,kt:()=>k});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function o(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/0cbf8c76.5424cc91.js b/assets/js/0cbf8c76.5424cc91.js
new file mode 100644
index 000000000..bd3927d60
--- /dev/null
+++ b/assets/js/0cbf8c76.5424cc91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9683],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0e1242db.f7b5f311.js b/assets/js/0e1242db.f7b5f311.js
new file mode 100644
index 000000000..aa2913dc0
--- /dev/null
+++ b/assets/js/0e1242db.f7b5f311.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8404],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0f521c09.9b200e06.js b/assets/js/0f521c09.9b200e06.js
new file mode 100644
index 000000000..36d9acf28
--- /dev/null
+++ b/assets/js/0f521c09.9b200e06.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4653],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/0f59f104.54c20929.js b/assets/js/0f59f104.54c20929.js
new file mode 100644
index 000000000..ae3b8e8c2
--- /dev/null
+++ b/assets/js/0f59f104.54c20929.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9734],{3905:(e,a,o)=>{o.d(a,{Zo:()=>u,kt:()=>f});var n=o(67294);function t(e,a,o){return a in e?Object.defineProperty(e,a,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[a]=o,e}function s(e,a){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),o.push.apply(o,n)}return o}function r(e){for(var a= [...]
\ No newline at end of file
diff --git a/assets/js/0f7339bc.ea4ebd6c.js b/assets/js/0f7339bc.ea4ebd6c.js
new file mode 100644
index 000000000..37dd2d816
--- /dev/null
+++ b/assets/js/0f7339bc.ea4ebd6c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2707],{3905:(e,a,n)=>{n.d(a,{Zo:()=>p,kt:()=>d});var r=n(67294);function t(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function l(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var a= [...]
\ No newline at end of file
diff --git a/assets/js/10f31d44.baf397f4.js b/assets/js/10f31d44.baf397f4.js
new file mode 100644
index 000000000..4f4b85fa4
--- /dev/null
+++ b/assets/js/10f31d44.baf397f4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1391],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>m});var n=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,n)}return o}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/11205e05.c1e0f381.js b/assets/js/11205e05.c1e0f381.js
new file mode 100644
index 000000000..eedf60b8c
--- /dev/null
+++ b/assets/js/11205e05.c1e0f381.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9887],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>v});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/128e376b.e5ed2590.js b/assets/js/128e376b.e5ed2590.js
new file mode 100644
index 000000000..19a845a82
--- /dev/null
+++ b/assets/js/128e376b.e5ed2590.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1974],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/12d97def.4ed8040b.js b/assets/js/12d97def.4ed8040b.js
new file mode 100644
index 000000000..96d348fc5
--- /dev/null
+++ b/assets/js/12d97def.4ed8040b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5311],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/13ec796f.31199178.js b/assets/js/13ec796f.31199178.js
new file mode 100644
index 000000000..1cfc01966
--- /dev/null
+++ b/assets/js/13ec796f.31199178.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6457],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>c});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1416f869.858f3ca6.js b/assets/js/1416f869.858f3ca6.js
new file mode 100644
index 000000000..80cc40a11
--- /dev/null
+++ b/assets/js/1416f869.858f3ca6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3730],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/14e10449.d94f9658.js b/assets/js/14e10449.d94f9658.js
new file mode 100644
index 000000000..64fdcd531
--- /dev/null
+++ b/assets/js/14e10449.d94f9658.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1865],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var a=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/14fe9d3d.9a7449cf.js b/assets/js/14fe9d3d.9a7449cf.js
new file mode 100644
index 000000000..62e34abd8
--- /dev/null
+++ b/assets/js/14fe9d3d.9a7449cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8861],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/162f104e.dcb24c3f.js b/assets/js/162f104e.dcb24c3f.js
new file mode 100644
index 000000000..c9df7018c
--- /dev/null
+++ b/assets/js/162f104e.dcb24c3f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9654],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/16cdfe1f.81d181ae.js b/assets/js/16cdfe1f.81d181ae.js
new file mode 100644
index 000000000..b557ab7e0
--- /dev/null
+++ b/assets/js/16cdfe1f.81d181ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1013],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/175147d3.128ff523.js b/assets/js/175147d3.128ff523.js
new file mode 100644
index 000000000..85e190fdf
--- /dev/null
+++ b/assets/js/175147d3.128ff523.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4127],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/180c7d3d.707c1fd1.js b/assets/js/180c7d3d.707c1fd1.js
new file mode 100644
index 000000000..709c3e211
--- /dev/null
+++ b/assets/js/180c7d3d.707c1fd1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9543],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>g});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1871b932.6a7cde29.js b/assets/js/1871b932.6a7cde29.js
new file mode 100644
index 000000000..1474d96ce
--- /dev/null
+++ b/assets/js/1871b932.6a7cde29.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5304],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1981460b.d8b58f4d.js b/assets/js/1981460b.d8b58f4d.js
new file mode 100644
index 000000000..eb4e9310f
--- /dev/null
+++ b/assets/js/1981460b.d8b58f4d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8215],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function p(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1c6ec3f0.06804c54.js b/assets/js/1c6ec3f0.06804c54.js
new file mode 100644
index 000000000..96e07a3a0
--- /dev/null
+++ b/assets/js/1c6ec3f0.06804c54.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6443],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>p});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1cb29896.934198b6.js b/assets/js/1cb29896.934198b6.js
new file mode 100644
index 000000000..44c1de945
--- /dev/null
+++ b/assets/js/1cb29896.934198b6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1891],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var a=t(67294);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/1dbed9b8.0e51c37d.js b/assets/js/1dbed9b8.0e51c37d.js
new file mode 100644
index 000000000..f7e76351e
--- /dev/null
+++ b/assets/js/1dbed9b8.0e51c37d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7798],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1e267fd0.c8aea834.js b/assets/js/1e267fd0.c8aea834.js
new file mode 100644
index 000000000..acae6b71d
--- /dev/null
+++ b/assets/js/1e267fd0.c8aea834.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8259],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/1e55cdad.37f37478.js b/assets/js/1e55cdad.37f37478.js
new file mode 100644
index 000000000..8ba4508f6
--- /dev/null
+++ b/assets/js/1e55cdad.37f37478.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3801],{3905:(e,n,r)=>{r.d(n,{Zo:()=>c,kt:()=>m});var t=r(67294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/1fb9f5aa.3a329bcd.js b/assets/js/1fb9f5aa.3a329bcd.js
new file mode 100644
index 000000000..541727521
--- /dev/null
+++ b/assets/js/1fb9f5aa.3a329bcd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4786],{3905:(e,n,a)=>{a.d(n,{Zo:()=>p,kt:()=>d});var r=a(67294);function t(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function l(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/2006e5b3.a2eca4c1.js b/assets/js/2006e5b3.a2eca4c1.js
new file mode 100644
index 000000000..3b231c516
--- /dev/null
+++ b/assets/js/2006e5b3.a2eca4c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4578],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/216f5e40.744e75a2.js b/assets/js/216f5e40.744e75a2.js
new file mode 100644
index 000000000..98c06e8a0
--- /dev/null
+++ b/assets/js/216f5e40.744e75a2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7958],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/221e2a28.fad95750.js b/assets/js/221e2a28.fad95750.js
new file mode 100644
index 000000000..ed2db9513
--- /dev/null
+++ b/assets/js/221e2a28.fad95750.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1431],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function n(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2271b53b.afef265c.js b/assets/js/2271b53b.afef265c.js
new file mode 100644
index 000000000..81dd764b8
--- /dev/null
+++ b/assets/js/2271b53b.afef265c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[320],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>h});var r=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1 [...]
\ No newline at end of file
diff --git a/assets/js/23d0d62d.7e05716e.js b/assets/js/23d0d62d.7e05716e.js
new file mode 100644
index 000000000..ea4ec5e06
--- /dev/null
+++ b/assets/js/23d0d62d.7e05716e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4978],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/25bcdfb1.32443ef8.js b/assets/js/25bcdfb1.32443ef8.js
new file mode 100644
index 000000000..ff01854d5
--- /dev/null
+++ b/assets/js/25bcdfb1.32443ef8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3548],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/25bf4862.8ca75fcf.js b/assets/js/25bf4862.8ca75fcf.js
new file mode 100644
index 000000000..0b37af5da
--- /dev/null
+++ b/assets/js/25bf4862.8ca75fcf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9716],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2677d7b8.a379283d.js b/assets/js/2677d7b8.a379283d.js
new file mode 100644
index 000000000..0a301e8c1
--- /dev/null
+++ b/assets/js/2677d7b8.a379283d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6320],{3905:(e,n,t)=>{t.d(n,{Zo:()=>l,kt:()=>u});var i=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/268fe099.e956014b.js b/assets/js/268fe099.e956014b.js
new file mode 100644
index 000000000..1c53b3d61
--- /dev/null
+++ b/assets/js/268fe099.e956014b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5087],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/26f2754c.99c92df7.js b/assets/js/26f2754c.99c92df7.js
new file mode 100644
index 000000000..06ea305cc
--- /dev/null
+++ b/assets/js/26f2754c.99c92df7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[444],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var i=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/274a38ba.74792bc2.js b/assets/js/274a38ba.74792bc2.js
new file mode 100644
index 000000000..d9cb4fbe1
--- /dev/null
+++ b/assets/js/274a38ba.74792bc2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4776],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>g});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/27930202.318dd3c5.js b/assets/js/27930202.318dd3c5.js
new file mode 100644
index 000000000..b1f390864
--- /dev/null
+++ b/assets/js/27930202.318dd3c5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9784],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>N});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/28095a7c.59fa9750.js b/assets/js/28095a7c.59fa9750.js
new file mode 100644
index 000000000..b22ee41ec
--- /dev/null
+++ b/assets/js/28095a7c.59fa9750.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6545],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/285d2efe.14effa91.js b/assets/js/285d2efe.14effa91.js
new file mode 100644
index 000000000..0b616acbc
--- /dev/null
+++ b/assets/js/285d2efe.14effa91.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3625],{3905:(e,n,t)=>{t.d(n,{Zo:()=>m,kt:()=>g});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/292ba8e7.731ca173.js b/assets/js/292ba8e7.731ca173.js
new file mode 100644
index 000000000..467cc0965
--- /dev/null
+++ b/assets/js/292ba8e7.731ca173.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1054],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/293487cb.6842a7bb.js b/assets/js/293487cb.6842a7bb.js
new file mode 100644
index 000000000..bc85c36e1
--- /dev/null
+++ b/assets/js/293487cb.6842a7bb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3159],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2951a428.80c710ff.js b/assets/js/2951a428.80c710ff.js
new file mode 100644
index 000000000..10579a56c
--- /dev/null
+++ b/assets/js/2951a428.80c710ff.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8763],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2ab55e37.de48a00d.js b/assets/js/2ab55e37.de48a00d.js
new file mode 100644
index 000000000..1cfdb7627
--- /dev/null
+++ b/assets/js/2ab55e37.de48a00d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3370],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2af72138.e305971b.js b/assets/js/2af72138.e305971b.js
new file mode 100644
index 000000000..1cf1ae2a3
--- /dev/null
+++ b/assets/js/2af72138.e305971b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6714],{3905:(e,n,t)=>{t.d(n,{Zo:()=>l,kt:()=>u});var i=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/2c5b6b24.8c090f16.js b/assets/js/2c5b6b24.8c090f16.js
new file mode 100644
index 000000000..9ed055ad4
--- /dev/null
+++ b/assets/js/2c5b6b24.8c090f16.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4946],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2c9eea52.aebd0cb3.js b/assets/js/2c9eea52.aebd0cb3.js
new file mode 100644
index 000000000..277683956
--- /dev/null
+++ b/assets/js/2c9eea52.aebd0cb3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6990],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2cfe4cf6.ed7a85b9.js b/assets/js/2cfe4cf6.ed7a85b9.js
new file mode 100644
index 000000000..14c072434
--- /dev/null
+++ b/assets/js/2cfe4cf6.ed7a85b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3892],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2d2555e5.63104932.js b/assets/js/2d2555e5.63104932.js
new file mode 100644
index 000000000..030f6f778
--- /dev/null
+++ b/assets/js/2d2555e5.63104932.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4808],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2d6cfe83.0bcdb857.js b/assets/js/2d6cfe83.0bcdb857.js
new file mode 100644
index 000000000..197ead9ad
--- /dev/null
+++ b/assets/js/2d6cfe83.0bcdb857.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6198],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>g});var o=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/2ec3a9a7.d9e71afb.js b/assets/js/2ec3a9a7.d9e71afb.js
new file mode 100644
index 000000000..004b86a03
--- /dev/null
+++ b/assets/js/2ec3a9a7.d9e71afb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6762],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2fbe7d8e.bd105c0b.js b/assets/js/2fbe7d8e.bd105c0b.js
new file mode 100644
index 000000000..8ff2455ef
--- /dev/null
+++ b/assets/js/2fbe7d8e.bd105c0b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7549],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/2fdfe072.e4d87900.js b/assets/js/2fdfe072.e4d87900.js
new file mode 100644
index 000000000..93f8fc6b2
--- /dev/null
+++ b/assets/js/2fdfe072.e4d87900.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8391],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>g});var a=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function d(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3135cdec.bcff538c.js b/assets/js/3135cdec.bcff538c.js
new file mode 100644
index 000000000..0232d43aa
--- /dev/null
+++ b/assets/js/3135cdec.bcff538c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6614],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>c});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/315053d0.d46efa53.js b/assets/js/315053d0.d46efa53.js
new file mode 100644
index 000000000..d9366285e
--- /dev/null
+++ b/assets/js/315053d0.d46efa53.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9304],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>c});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/31f72083.81ee5a2a.js b/assets/js/31f72083.81ee5a2a.js
new file mode 100644
index 000000000..bd8aac472
--- /dev/null
+++ b/assets/js/31f72083.81ee5a2a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7314],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/32212b8b.46f503e7.js b/assets/js/32212b8b.46f503e7.js
new file mode 100644
index 000000000..0beab199c
--- /dev/null
+++ b/assets/js/32212b8b.46f503e7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1897],{3905:(t,e,n)=>{n.d(e,{Zo:()=>s,kt:()=>f});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/32256df4.f9650899.js b/assets/js/32256df4.f9650899.js
new file mode 100644
index 000000000..bed75937d
--- /dev/null
+++ b/assets/js/32256df4.f9650899.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[186],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/32f5b141.9e0bb023.js b/assets/js/32f5b141.9e0bb023.js
new file mode 100644
index 000000000..e1032f1ff
--- /dev/null
+++ b/assets/js/32f5b141.9e0bb023.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8912],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/32fb84ff.f33af4ca.js b/assets/js/32fb84ff.f33af4ca.js
new file mode 100644
index 000000000..f6dac4289
--- /dev/null
+++ b/assets/js/32fb84ff.f33af4ca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[43],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>g});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t=1; [...]
\ No newline at end of file
diff --git a/assets/js/33e3889f.9460f763.js b/assets/js/33e3889f.9460f763.js
new file mode 100644
index 000000000..d1d623c45
--- /dev/null
+++ b/assets/js/33e3889f.9460f763.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3702],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/349c2143.32b574c0.js b/assets/js/349c2143.32b574c0.js
new file mode 100644
index 000000000..ee1288b9b
--- /dev/null
+++ b/assets/js/349c2143.32b574c0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6645],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/34da69bb.982f2300.js b/assets/js/34da69bb.982f2300.js
new file mode 100644
index 000000000..721c8d92f
--- /dev/null
+++ b/assets/js/34da69bb.982f2300.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7739],{3905:(e,n,a)=>{a.d(n,{Zo:()=>u,kt:()=>v});var t=a(67294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function o(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/36497d9a.6efd4c0b.js b/assets/js/36497d9a.6efd4c0b.js
new file mode 100644
index 000000000..0de3dd8ff
--- /dev/null
+++ b/assets/js/36497d9a.6efd4c0b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5763],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/382081cb.b59151ac.js b/assets/js/382081cb.b59151ac.js
new file mode 100644
index 000000000..fd48c0125
--- /dev/null
+++ b/assets/js/382081cb.b59151ac.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9150],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3850f2cd.58e04bb5.js b/assets/js/3850f2cd.58e04bb5.js
new file mode 100644
index 000000000..a2a1e5581
--- /dev/null
+++ b/assets/js/3850f2cd.58e04bb5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6838],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/39e8690f.2ffc331d.js b/assets/js/39e8690f.2ffc331d.js
new file mode 100644
index 000000000..89ef1f405
--- /dev/null
+++ b/assets/js/39e8690f.2ffc331d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[634],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/3aef39f9.3de885bc.js b/assets/js/3aef39f9.3de885bc.js
new file mode 100644
index 000000000..c1d9a7b89
--- /dev/null
+++ b/assets/js/3aef39f9.3de885bc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4545],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3ba5c2fc.5394fc02.js b/assets/js/3ba5c2fc.5394fc02.js
new file mode 100644
index 000000000..185f27e45
--- /dev/null
+++ b/assets/js/3ba5c2fc.5394fc02.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7185],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>m});var i=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function a(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/3ccbe206.01fa8f49.js b/assets/js/3ccbe206.01fa8f49.js
new file mode 100644
index 000000000..d2efd5276
--- /dev/null
+++ b/assets/js/3ccbe206.01fa8f49.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6170],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3dc3081e.62800137.js b/assets/js/3dc3081e.62800137.js
new file mode 100644
index 000000000..5cb19306e
--- /dev/null
+++ b/assets/js/3dc3081e.62800137.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2472],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3dc48ea3.f15de7db.js b/assets/js/3dc48ea3.f15de7db.js
new file mode 100644
index 000000000..82218da9f
--- /dev/null
+++ b/assets/js/3dc48ea3.f15de7db.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1182],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3df53c0b.65b6d642.js b/assets/js/3df53c0b.65b6d642.js
new file mode 100644
index 000000000..b2069993d
--- /dev/null
+++ b/assets/js/3df53c0b.65b6d642.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4375],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3ee44481.abc535f5.js b/assets/js/3ee44481.abc535f5.js
new file mode 100644
index 000000000..c8d6923ba
--- /dev/null
+++ b/assets/js/3ee44481.abc535f5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7302],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3fc4ca5f.ab4b8ed7.js b/assets/js/3fc4ca5f.ab4b8ed7.js
new file mode 100644
index 000000000..681de03d2
--- /dev/null
+++ b/assets/js/3fc4ca5f.ab4b8ed7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8447],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/3fdeab71.b7507521.js b/assets/js/3fdeab71.b7507521.js
new file mode 100644
index 000000000..c33727796
--- /dev/null
+++ b/assets/js/3fdeab71.b7507521.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2285],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>h});var o=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/404e84a5.ba2699df.js b/assets/js/404e84a5.ba2699df.js
new file mode 100644
index 000000000..16fef13aa
--- /dev/null
+++ b/assets/js/404e84a5.ba2699df.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7462],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/408f2282.6e6122b4.js b/assets/js/408f2282.6e6122b4.js
new file mode 100644
index 000000000..0768d4ccb
--- /dev/null
+++ b/assets/js/408f2282.6e6122b4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2939],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var a=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4113b856.4af9b667.js b/assets/js/4113b856.4af9b667.js
new file mode 100644
index 000000000..60cd39dab
--- /dev/null
+++ b/assets/js/4113b856.4af9b667.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8508],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/412ee224.e53b5e8a.js b/assets/js/412ee224.e53b5e8a.js
new file mode 100644
index 000000000..13d79373e
--- /dev/null
+++ b/assets/js/412ee224.e53b5e8a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9138],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/41b2c32b.4a21a0f6.js b/assets/js/41b2c32b.4a21a0f6.js
new file mode 100644
index 000000000..6a3e7b12f
--- /dev/null
+++ b/assets/js/41b2c32b.4a21a0f6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8236],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/41dbc86e.8551d373.js b/assets/js/41dbc86e.8551d373.js
new file mode 100644
index 000000000..5bfa15aec
--- /dev/null
+++ b/assets/js/41dbc86e.8551d373.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3890],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/42be3a3f.68dace42.js b/assets/js/42be3a3f.68dace42.js
new file mode 100644
index 000000000..0eb9a4503
--- /dev/null
+++ b/assets/js/42be3a3f.68dace42.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9466],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>m});var n=t(67294);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/42dd4fd0.12d78f44.js b/assets/js/42dd4fd0.12d78f44.js
new file mode 100644
index 000000000..b944f449d
--- /dev/null
+++ b/assets/js/42dd4fd0.12d78f44.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6577],{3905:(t,e,n)=>{n.d(e,{Zo:()=>d,kt:()=>m});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function o(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/43c5580d.ca58458d.js b/assets/js/43c5580d.ca58458d.js
new file mode 100644
index 000000000..218d24c90
--- /dev/null
+++ b/assets/js/43c5580d.ca58458d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9800],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var i=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4451b7a8.95b1a952.js b/assets/js/4451b7a8.95b1a952.js
new file mode 100644
index 000000000..942b62874
--- /dev/null
+++ b/assets/js/4451b7a8.95b1a952.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1274],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/445bf8fb.4e0bced4.js b/assets/js/445bf8fb.4e0bced4.js
new file mode 100644
index 000000000..ddab528bd
--- /dev/null
+++ b/assets/js/445bf8fb.4e0bced4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9626],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4505fb1c.a185dac4.js b/assets/js/4505fb1c.a185dac4.js
new file mode 100644
index 000000000..0376ffa33
--- /dev/null
+++ b/assets/js/4505fb1c.a185dac4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7258],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/45247bbe.62d650d4.js b/assets/js/45247bbe.62d650d4.js
new file mode 100644
index 000000000..3bdb7b245
--- /dev/null
+++ b/assets/js/45247bbe.62d650d4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[848],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/457e0700.4b216276.js b/assets/js/457e0700.4b216276.js
new file mode 100644
index 000000000..8df80aa89
--- /dev/null
+++ b/assets/js/457e0700.4b216276.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2336],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/47002093.b2c8850f.js b/assets/js/47002093.b2c8850f.js
new file mode 100644
index 000000000..01996da1c
--- /dev/null
+++ b/assets/js/47002093.b2c8850f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6945],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>f});var i=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function a(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/48151658.e2d74e0e.js b/assets/js/48151658.e2d74e0e.js
new file mode 100644
index 000000000..ec8862a14
--- /dev/null
+++ b/assets/js/48151658.e2d74e0e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4429],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/4d24b7c4.8b3c195f.js b/assets/js/4d24b7c4.8b3c195f.js
new file mode 100644
index 000000000..279a12494
--- /dev/null
+++ b/assets/js/4d24b7c4.8b3c195f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4518],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4e063dea.784855f4.js b/assets/js/4e063dea.784855f4.js
new file mode 100644
index 000000000..1e0a02764
--- /dev/null
+++ b/assets/js/4e063dea.784855f4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6047],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4eb80632.88d40c9e.js b/assets/js/4eb80632.88d40c9e.js
new file mode 100644
index 000000000..761fc722c
--- /dev/null
+++ b/assets/js/4eb80632.88d40c9e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6830],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4ec2c662.f86c8180.js b/assets/js/4ec2c662.f86c8180.js
new file mode 100644
index 000000000..0011fd1f4
--- /dev/null
+++ b/assets/js/4ec2c662.f86c8180.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2963],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>h});var n=t(67294);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/4f22fcc6.4bc27347.js b/assets/js/4f22fcc6.4bc27347.js
new file mode 100644
index 000000000..e9e3e8420
--- /dev/null
+++ b/assets/js/4f22fcc6.4bc27347.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8005],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/4fbcb8e1.875f4296.js b/assets/js/4fbcb8e1.875f4296.js
new file mode 100644
index 000000000..1629c3e87
--- /dev/null
+++ b/assets/js/4fbcb8e1.875f4296.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3006],{3905:(e,t,o)=>{o.d(t,{Zo:()=>u,kt:()=>g});var a=o(67294);function r(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function n(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function d(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/503ba086.d7a0a453.js b/assets/js/503ba086.d7a0a453.js
new file mode 100644
index 000000000..784612453
--- /dev/null
+++ b/assets/js/503ba086.d7a0a453.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4386],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/504b36f7.ab674110.js b/assets/js/504b36f7.ab674110.js
new file mode 100644
index 000000000..fb66030f6
--- /dev/null
+++ b/assets/js/504b36f7.ab674110.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[193],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/50d798df.8a7dfcd3.js b/assets/js/50d798df.8a7dfcd3.js
new file mode 100644
index 000000000..c05c68844
--- /dev/null
+++ b/assets/js/50d798df.8a7dfcd3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1216],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/52c72b17.3c3f1a41.js b/assets/js/52c72b17.3c3f1a41.js
new file mode 100644
index 000000000..7d5d318ec
--- /dev/null
+++ b/assets/js/52c72b17.3c3f1a41.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4310],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/547788e1.ea1f02de.js b/assets/js/547788e1.ea1f02de.js
new file mode 100644
index 000000000..89287aa96
--- /dev/null
+++ b/assets/js/547788e1.ea1f02de.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2381],{3905:(e,n,t)=>{t.d(n,{Zo:()=>s,kt:()=>f});var r=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/54a411b6.1809665d.js b/assets/js/54a411b6.1809665d.js
new file mode 100644
index 000000000..718711ea1
--- /dev/null
+++ b/assets/js/54a411b6.1809665d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[871],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/55e202dc.1672e293.js b/assets/js/55e202dc.1672e293.js
new file mode 100644
index 000000000..1a27b44fa
--- /dev/null
+++ b/assets/js/55e202dc.1672e293.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7662],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/55fdd877.fa6cdc5b.js b/assets/js/55fdd877.fa6cdc5b.js
new file mode 100644
index 000000000..77f4bcf70
--- /dev/null
+++ b/assets/js/55fdd877.fa6cdc5b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9747],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var r=a(67294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5670b262.8b204301.js b/assets/js/5670b262.8b204301.js
new file mode 100644
index 000000000..53f811ee1
--- /dev/null
+++ b/assets/js/5670b262.8b204301.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3500],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/567f2b24.ec1360b7.js b/assets/js/567f2b24.ec1360b7.js
new file mode 100644
index 000000000..4cd081635
--- /dev/null
+++ b/assets/js/567f2b24.ec1360b7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7403],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/57ee89c0.657f47cd.js b/assets/js/57ee89c0.657f47cd.js
new file mode 100644
index 000000000..0eafd9d65
--- /dev/null
+++ b/assets/js/57ee89c0.657f47cd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3441],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/58874471.df827411.js b/assets/js/58874471.df827411.js
new file mode 100644
index 000000000..fef9ab5bf
--- /dev/null
+++ b/assets/js/58874471.df827411.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[986],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/58b22988.1099322e.js b/assets/js/58b22988.1099322e.js
new file mode 100644
index 000000000..42fd79311
--- /dev/null
+++ b/assets/js/58b22988.1099322e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2567],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var o=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function n(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/58edcf77.54f995dd.js b/assets/js/58edcf77.54f995dd.js
new file mode 100644
index 000000000..d86779338
--- /dev/null
+++ b/assets/js/58edcf77.54f995dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9962],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5a08e3a4.0dc414dc.js b/assets/js/5a08e3a4.0dc414dc.js
new file mode 100644
index 000000000..7df7ea9f8
--- /dev/null
+++ b/assets/js/5a08e3a4.0dc414dc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9339],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5a722b3b.f8a27ddb.js b/assets/js/5a722b3b.f8a27ddb.js
new file mode 100644
index 000000000..e6c2631e2
--- /dev/null
+++ b/assets/js/5a722b3b.f8a27ddb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[524],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/5a89402e.290f6fca.js b/assets/js/5a89402e.290f6fca.js
new file mode 100644
index 000000000..be47bae1f
--- /dev/null
+++ b/assets/js/5a89402e.290f6fca.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3323],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>m});var i=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function a(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/5bb38577.8f6fc382.js b/assets/js/5bb38577.8f6fc382.js
new file mode 100644
index 000000000..32898bf7c
--- /dev/null
+++ b/assets/js/5bb38577.8f6fc382.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3184],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5bcd0a3f.7614ccc8.js b/assets/js/5bcd0a3f.7614ccc8.js
new file mode 100644
index 000000000..7d65ff23b
--- /dev/null
+++ b/assets/js/5bcd0a3f.7614ccc8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2722],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>g});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5bf6e863.2581593c.js b/assets/js/5bf6e863.2581593c.js
new file mode 100644
index 000000000..e31f4b65c
--- /dev/null
+++ b/assets/js/5bf6e863.2581593c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[161],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/5c6b73c5.d2057bbd.js b/assets/js/5c6b73c5.d2057bbd.js
new file mode 100644
index 000000000..616bed956
--- /dev/null
+++ b/assets/js/5c6b73c5.d2057bbd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[315],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/5ddf27b8.c496dfeb.js b/assets/js/5ddf27b8.c496dfeb.js
new file mode 100644
index 000000000..38951ff5a
--- /dev/null
+++ b/assets/js/5ddf27b8.c496dfeb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[843],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>f});var i=t(67294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1 [...]
\ No newline at end of file
diff --git a/assets/js/5e9ea8d6.ba24b662.js b/assets/js/5e9ea8d6.ba24b662.js
new file mode 100644
index 000000000..50ca54bcc
--- /dev/null
+++ b/assets/js/5e9ea8d6.ba24b662.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4807],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5ecd7b94.e5cc6a4a.js b/assets/js/5ecd7b94.e5cc6a4a.js
new file mode 100644
index 000000000..ef677f107
--- /dev/null
+++ b/assets/js/5ecd7b94.e5cc6a4a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5367],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>d});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5eed60db.a3a7fd4b.js b/assets/js/5eed60db.a3a7fd4b.js
new file mode 100644
index 000000000..67a690424
--- /dev/null
+++ b/assets/js/5eed60db.a3a7fd4b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2626],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5f349eee.98a22383.js b/assets/js/5f349eee.98a22383.js
new file mode 100644
index 000000000..4835a082d
--- /dev/null
+++ b/assets/js/5f349eee.98a22383.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8053],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5f40121b.d96ad403.js b/assets/js/5f40121b.d96ad403.js
new file mode 100644
index 000000000..b049f508a
--- /dev/null
+++ b/assets/js/5f40121b.d96ad403.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6513],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5f8c15b3.ed8bb0fb.js b/assets/js/5f8c15b3.ed8bb0fb.js
new file mode 100644
index 000000000..30e927691
--- /dev/null
+++ b/assets/js/5f8c15b3.ed8bb0fb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8434],{3905:(e,r,t)=>{t.d(r,{Zo:()=>p,kt:()=>h});var a=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/5fa314af.2cfb1279.js b/assets/js/5fa314af.2cfb1279.js
new file mode 100644
index 000000000..8e65e6557
--- /dev/null
+++ b/assets/js/5fa314af.2cfb1279.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2360],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>c});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5ff9c08d.d242e779.js b/assets/js/5ff9c08d.d242e779.js
new file mode 100644
index 000000000..edeaf40af
--- /dev/null
+++ b/assets/js/5ff9c08d.d242e779.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3143],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/5ffc9c90.afd4ea4e.js b/assets/js/5ffc9c90.afd4ea4e.js
new file mode 100644
index 000000000..cd62d7bf4
--- /dev/null
+++ b/assets/js/5ffc9c90.afd4ea4e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1459],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/60b9c99e.bd70a20e.js b/assets/js/60b9c99e.bd70a20e.js
new file mode 100644
index 000000000..6a763fcb2
--- /dev/null
+++ b/assets/js/60b9c99e.bd70a20e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[628],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/60b9c99e.e78b596a.js b/assets/js/60b9c99e.e78b596a.js
deleted file mode 100644
index 993d47dc2..000000000
--- a/assets/js/60b9c99e.e78b596a.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[628],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function s(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/60f9804e.2cfc53a6.js b/assets/js/60f9804e.2cfc53a6.js
new file mode 100644
index 000000000..749bdc3a6
--- /dev/null
+++ b/assets/js/60f9804e.2cfc53a6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3678],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>m});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/612017ab.8fdafdb0.js b/assets/js/612017ab.8fdafdb0.js
new file mode 100644
index 000000000..64e4381b8
--- /dev/null
+++ b/assets/js/612017ab.8fdafdb0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4350],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/615c06f6.379146e8.js b/assets/js/615c06f6.379146e8.js
new file mode 100644
index 000000000..3b0903f53
--- /dev/null
+++ b/assets/js/615c06f6.379146e8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1475],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6547e5cb.917f866f.js b/assets/js/6547e5cb.917f866f.js
new file mode 100644
index 000000000..1da10abc5
--- /dev/null
+++ b/assets/js/6547e5cb.917f866f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6255],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/672a9227.4342d623.js b/assets/js/672a9227.4342d623.js
new file mode 100644
index 000000000..4dfcc2a6a
--- /dev/null
+++ b/assets/js/672a9227.4342d623.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3177],{3905:(e,r,n)=>{n.d(r,{Zo:()=>c,kt:()=>g});var t=n(67294);function o(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function i(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function a(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/67933092.fde7658a.js b/assets/js/67933092.fde7658a.js
new file mode 100644
index 000000000..6c2cb47b8
--- /dev/null
+++ b/assets/js/67933092.fde7658a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7706],{3905:(e,a,n)=>{n.d(a,{Zo:()=>p,kt:()=>d});var r=n(67294);function t(e,a,n){return a in e?Object.defineProperty(e,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[a]=n,e}function l(e,a){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var a= [...]
\ No newline at end of file
diff --git a/assets/js/67c671c5.28c16b0a.js b/assets/js/67c671c5.28c16b0a.js
new file mode 100644
index 000000000..81087deeb
--- /dev/null
+++ b/assets/js/67c671c5.28c16b0a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2516],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/68368662.c2178e3f.js b/assets/js/68368662.c2178e3f.js
new file mode 100644
index 000000000..007c4d00c
--- /dev/null
+++ b/assets/js/68368662.c2178e3f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9043],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>f});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6865240a.3b28be3c.js b/assets/js/6865240a.3b28be3c.js
deleted file mode 100644
index 41d7b0473..000000000
--- a/assets/js/6865240a.3b28be3c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3513],{3905:(e,t,a)=>{a.d(t,{Zo:()=>l,kt:()=>h});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6865240a.d68f5211.js b/assets/js/6865240a.d68f5211.js
new file mode 100644
index 000000000..1a79cbb26
--- /dev/null
+++ b/assets/js/6865240a.d68f5211.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3513],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>f});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/688a6cad.8d4f3604.js b/assets/js/688a6cad.8d4f3604.js
new file mode 100644
index 000000000..1b65f6a9e
--- /dev/null
+++ b/assets/js/688a6cad.8d4f3604.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5972],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6979e7da.d97c9f61.js b/assets/js/6979e7da.d97c9f61.js
new file mode 100644
index 000000000..4e2ede198
--- /dev/null
+++ b/assets/js/6979e7da.d97c9f61.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1186],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>m});var a=t(67294);function n(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/69bee408.8882c7c2.js b/assets/js/69bee408.8882c7c2.js
new file mode 100644
index 000000000..84bcad826
--- /dev/null
+++ b/assets/js/69bee408.8882c7c2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4623],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6bb9967c.1c07fe5d.js b/assets/js/6bb9967c.1c07fe5d.js
deleted file mode 100644
index fc2446c0f..000000000
--- a/assets/js/6bb9967c.1c07fe5d.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7971],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6bb9967c.8feb102e.js b/assets/js/6bb9967c.8feb102e.js
new file mode 100644
index 000000000..0790ab573
--- /dev/null
+++ b/assets/js/6bb9967c.8feb102e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7971],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>m});var r=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function n(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6c62c6c7.e9d2a8ad.js b/assets/js/6c62c6c7.e9d2a8ad.js
new file mode 100644
index 000000000..0ffbf5b3b
--- /dev/null
+++ b/assets/js/6c62c6c7.e9d2a8ad.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6010],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>c});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6cdb5461.42743f61.js b/assets/js/6cdb5461.42743f61.js
new file mode 100644
index 000000000..da0b68603
--- /dev/null
+++ b/assets/js/6cdb5461.42743f61.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2669],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6d081973.8d4c385d.js b/assets/js/6d081973.8d4c385d.js
new file mode 100644
index 000000000..5af8c40cc
--- /dev/null
+++ b/assets/js/6d081973.8d4c385d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3943],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>N});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/6d526f5c.7e5d2fb3.js b/assets/js/6d526f5c.7e5d2fb3.js
new file mode 100644
index 000000000..a16f8dc8a
--- /dev/null
+++ b/assets/js/6d526f5c.7e5d2fb3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[548],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/6f318b00.7914511b.js b/assets/js/6f318b00.7914511b.js
new file mode 100644
index 000000000..f89589861
--- /dev/null
+++ b/assets/js/6f318b00.7914511b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5873],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/704b58a6.b64f6b15.js b/assets/js/704b58a6.b64f6b15.js
new file mode 100644
index 000000000..853038bbb
--- /dev/null
+++ b/assets/js/704b58a6.b64f6b15.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7132],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7178b9b6.399be51c.js b/assets/js/7178b9b6.399be51c.js
new file mode 100644
index 000000000..02b829e1d
--- /dev/null
+++ b/assets/js/7178b9b6.399be51c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[697],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/71b76a87.7a988d04.js b/assets/js/71b76a87.7a988d04.js
new file mode 100644
index 000000000..870ad05ee
--- /dev/null
+++ b/assets/js/71b76a87.7a988d04.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3062],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/71de5257.91f5368b.js b/assets/js/71de5257.91f5368b.js
new file mode 100644
index 000000000..78f027186
--- /dev/null
+++ b/assets/js/71de5257.91f5368b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2703],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/723062a3.df8c1a00.js b/assets/js/723062a3.df8c1a00.js
new file mode 100644
index 000000000..c2bd2277f
--- /dev/null
+++ b/assets/js/723062a3.df8c1a00.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[769],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/72f6be96.e794eb4d.js b/assets/js/72f6be96.e794eb4d.js
new file mode 100644
index 000000000..bc04da99f
--- /dev/null
+++ b/assets/js/72f6be96.e794eb4d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7126],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/73d55dcf.bd6efb62.js b/assets/js/73d55dcf.bd6efb62.js
new file mode 100644
index 000000000..b43af95b0
--- /dev/null
+++ b/assets/js/73d55dcf.bd6efb62.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9636],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/740ee517.97509c96.js b/assets/js/740ee517.97509c96.js
new file mode 100644
index 000000000..8efb7af43
--- /dev/null
+++ b/assets/js/740ee517.97509c96.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3934],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/760e0b1e.e6936821.js b/assets/js/760e0b1e.e6936821.js
new file mode 100644
index 000000000..b664bb5fb
--- /dev/null
+++ b/assets/js/760e0b1e.e6936821.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6755],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/769d5196.7f02d2cf.js b/assets/js/769d5196.7f02d2cf.js
new file mode 100644
index 000000000..e9a138e36
--- /dev/null
+++ b/assets/js/769d5196.7f02d2cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4092],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7761ea0c.8eb24979.js b/assets/js/7761ea0c.8eb24979.js
new file mode 100644
index 000000000..099a44357
--- /dev/null
+++ b/assets/js/7761ea0c.8eb24979.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1058],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>h});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/77f0d0af.27f124ff.js b/assets/js/77f0d0af.27f124ff.js
new file mode 100644
index 000000000..4ae2d598b
--- /dev/null
+++ b/assets/js/77f0d0af.27f124ff.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8764],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/77f7adac.ab4a94da.js b/assets/js/77f7adac.ab4a94da.js
new file mode 100644
index 000000000..b510ab0c8
--- /dev/null
+++ b/assets/js/77f7adac.ab4a94da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2124],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/782e3668.d188f03e.js b/assets/js/782e3668.d188f03e.js
new file mode 100644
index 000000000..7ae1ebf1c
--- /dev/null
+++ b/assets/js/782e3668.d188f03e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6335],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>k});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7a0ffe1e.bd61dc20.js b/assets/js/7a0ffe1e.bd61dc20.js
new file mode 100644
index 000000000..feae874c5
--- /dev/null
+++ b/assets/js/7a0ffe1e.bd61dc20.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4104],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7a4a6d4c.8a4ba79c.js b/assets/js/7a4a6d4c.8a4ba79c.js
new file mode 100644
index 000000000..20207fce2
--- /dev/null
+++ b/assets/js/7a4a6d4c.8a4ba79c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[302],{3905:(e,n,t)=>{t.d(n,{Zo:()=>c,kt:()=>f});var r=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1 [...]
\ No newline at end of file
diff --git a/assets/js/7ac80b3d.5467c585.js b/assets/js/7ac80b3d.5467c585.js
new file mode 100644
index 000000000..39b490426
--- /dev/null
+++ b/assets/js/7ac80b3d.5467c585.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[762],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/7b942940.aac2c16c.js b/assets/js/7b942940.aac2c16c.js
new file mode 100644
index 000000000..18a2570cc
--- /dev/null
+++ b/assets/js/7b942940.aac2c16c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1365],{3905:(t,e,n)=>{n.d(e,{Zo:()=>u,kt:()=>f});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/7bfab197.17dedc09.js b/assets/js/7bfab197.17dedc09.js
new file mode 100644
index 000000000..0e37b9e0b
--- /dev/null
+++ b/assets/js/7bfab197.17dedc09.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[637],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/7db7c644.cd58d407.js b/assets/js/7db7c644.cd58d407.js
new file mode 100644
index 000000000..86b3b1aa9
--- /dev/null
+++ b/assets/js/7db7c644.cd58d407.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7303],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7ddaea69.40f9b81e.js b/assets/js/7ddaea69.40f9b81e.js
new file mode 100644
index 000000000..eebd4b52b
--- /dev/null
+++ b/assets/js/7ddaea69.40f9b81e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2027],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7ef2feef.504cf11e.js b/assets/js/7ef2feef.504cf11e.js
deleted file mode 100644
index 773079c23..000000000
--- a/assets/js/7ef2feef.504cf11e.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9284],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7ef2feef.9cb1986d.js b/assets/js/7ef2feef.9cb1986d.js
new file mode 100644
index 000000000..9af9a5e02
--- /dev/null
+++ b/assets/js/7ef2feef.9cb1986d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9284],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/7f7ce349.24e19205.js b/assets/js/7f7ce349.24e19205.js
new file mode 100644
index 000000000..066bba182
--- /dev/null
+++ b/assets/js/7f7ce349.24e19205.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[472],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>c});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/819280be.ad403629.js b/assets/js/819280be.ad403629.js
new file mode 100644
index 000000000..e31b7bd2c
--- /dev/null
+++ b/assets/js/819280be.ad403629.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6575],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/81985269.667904c0.js b/assets/js/81985269.667904c0.js
new file mode 100644
index 000000000..7966de55b
--- /dev/null
+++ b/assets/js/81985269.667904c0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7424],{3905:(e,r,t)=>{t.d(r,{Zo:()=>s,kt:()=>d});var n=t(67294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function a(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/82593e9b.db6540b9.js b/assets/js/82593e9b.db6540b9.js
new file mode 100644
index 000000000..619386b58
--- /dev/null
+++ b/assets/js/82593e9b.db6540b9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6449],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var a=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/82732c32.995769da.js b/assets/js/82732c32.995769da.js
new file mode 100644
index 000000000..96c017b33
--- /dev/null
+++ b/assets/js/82732c32.995769da.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[267],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/84ac5748.348da100.js b/assets/js/84ac5748.348da100.js
new file mode 100644
index 000000000..b9fa4cae8
--- /dev/null
+++ b/assets/js/84ac5748.348da100.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1766],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/84fd1959.4c949af6.js b/assets/js/84fd1959.4c949af6.js
new file mode 100644
index 000000000..0710cd737
--- /dev/null
+++ b/assets/js/84fd1959.4c949af6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6331],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8549cd83.4d7f5362.js b/assets/js/8549cd83.4d7f5362.js
new file mode 100644
index 000000000..8611f37b8
--- /dev/null
+++ b/assets/js/8549cd83.4d7f5362.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4139],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/85811133.0dfd32dd.js b/assets/js/85811133.0dfd32dd.js
new file mode 100644
index 000000000..153a41264
--- /dev/null
+++ b/assets/js/85811133.0dfd32dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3535],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8603200e.bd17c7d1.js b/assets/js/8603200e.bd17c7d1.js
new file mode 100644
index 000000000..2fca40234
--- /dev/null
+++ b/assets/js/8603200e.bd17c7d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5403],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8603200e.ed44d493.js b/assets/js/8603200e.ed44d493.js
deleted file mode 100644
index b0d8a5d16..000000000
--- a/assets/js/8603200e.ed44d493.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5403],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/86365239.14ceacc7.js b/assets/js/86365239.14ceacc7.js
new file mode 100644
index 000000000..e1d66c9a6
--- /dev/null
+++ b/assets/js/86365239.14ceacc7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6060],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>g});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function d(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/8643da2b.294cded3.js b/assets/js/8643da2b.294cded3.js
new file mode 100644
index 000000000..a2f6b2efa
--- /dev/null
+++ b/assets/js/8643da2b.294cded3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8742],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/866dea45.95338ded.js b/assets/js/866dea45.95338ded.js
new file mode 100644
index 000000000..5e7ca081c
--- /dev/null
+++ b/assets/js/866dea45.95338ded.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4414],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/86f503e8.c2b18ce8.js b/assets/js/86f503e8.c2b18ce8.js
new file mode 100644
index 000000000..d42e1f2fc
--- /dev/null
+++ b/assets/js/86f503e8.c2b18ce8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6239],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/86ff69a9.8a670032.js b/assets/js/86ff69a9.8a670032.js
new file mode 100644
index 000000000..631dd0808
--- /dev/null
+++ b/assets/js/86ff69a9.8a670032.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8461],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/881b6e93.432caf22.js b/assets/js/881b6e93.432caf22.js
new file mode 100644
index 000000000..f518d9d77
--- /dev/null
+++ b/assets/js/881b6e93.432caf22.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1097],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8902724d.a141c0fc.js b/assets/js/8902724d.a141c0fc.js
new file mode 100644
index 000000000..64bcd5549
--- /dev/null
+++ b/assets/js/8902724d.a141c0fc.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5244],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8926f85a.9d0552b6.js b/assets/js/8926f85a.9d0552b6.js
new file mode 100644
index 000000000..4e27f9279
--- /dev/null
+++ b/assets/js/8926f85a.9d0552b6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4907],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8a6641d6.e3b91fae.js b/assets/js/8a6641d6.e3b91fae.js
new file mode 100644
index 000000000..12a45adf4
--- /dev/null
+++ b/assets/js/8a6641d6.e3b91fae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2909],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8a6a3c86.17196902.js b/assets/js/8a6a3c86.17196902.js
new file mode 100644
index 000000000..fa797e507
--- /dev/null
+++ b/assets/js/8a6a3c86.17196902.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9246],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8abd3472.f8fa029e.js b/assets/js/8abd3472.f8fa029e.js
new file mode 100644
index 000000000..be769ace7
--- /dev/null
+++ b/assets/js/8abd3472.f8fa029e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1003],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8adf3ad1.71f65ec1.js b/assets/js/8adf3ad1.71f65ec1.js
new file mode 100644
index 000000000..f471e7ba8
--- /dev/null
+++ b/assets/js/8adf3ad1.71f65ec1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8485],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8bf451e3.902fd53b.js b/assets/js/8bf451e3.902fd53b.js
new file mode 100644
index 000000000..059748782
--- /dev/null
+++ b/assets/js/8bf451e3.902fd53b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[753],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/8c07abe5.6ecccace.js b/assets/js/8c07abe5.6ecccace.js
new file mode 100644
index 000000000..fccdd37d7
--- /dev/null
+++ b/assets/js/8c07abe5.6ecccace.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6148],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>d});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8cdd5c5f.58196c75.js b/assets/js/8cdd5c5f.58196c75.js
new file mode 100644
index 000000000..705d057d3
--- /dev/null
+++ b/assets/js/8cdd5c5f.58196c75.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5027],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8d1560b6.9c5b7e81.js b/assets/js/8d1560b6.9c5b7e81.js
new file mode 100644
index 000000000..18262b9ef
--- /dev/null
+++ b/assets/js/8d1560b6.9c5b7e81.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6019],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8d4becf1.56f6f2eb.js b/assets/js/8d4becf1.56f6f2eb.js
new file mode 100644
index 000000000..935fe6bd0
--- /dev/null
+++ b/assets/js/8d4becf1.56f6f2eb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3262],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>h});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8dd13a4f.36da6c63.js b/assets/js/8dd13a4f.36da6c63.js
new file mode 100644
index 000000000..8c27f99f5
--- /dev/null
+++ b/assets/js/8dd13a4f.36da6c63.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1283],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8e7882e3.5bc26421.js b/assets/js/8e7882e3.5bc26421.js
new file mode 100644
index 000000000..d47bbe740
--- /dev/null
+++ b/assets/js/8e7882e3.5bc26421.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7008],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8e848799.58573e85.js b/assets/js/8e848799.58573e85.js
new file mode 100644
index 000000000..85f48bd8e
--- /dev/null
+++ b/assets/js/8e848799.58573e85.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5589],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>c});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function o(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/8e96f099.c52af446.js b/assets/js/8e96f099.c52af446.js
new file mode 100644
index 000000000..46b2c9404
--- /dev/null
+++ b/assets/js/8e96f099.c52af446.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1882],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/8ea8f2dd.0029585d.js b/assets/js/8ea8f2dd.0029585d.js
new file mode 100644
index 000000000..a5ae30f85
--- /dev/null
+++ b/assets/js/8ea8f2dd.0029585d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4712],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/90a27bdd.780c4b65.js b/assets/js/90a27bdd.780c4b65.js
new file mode 100644
index 000000000..9baaedc90
--- /dev/null
+++ b/assets/js/90a27bdd.780c4b65.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[144],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>k});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/91b90c19.98009396.js b/assets/js/91b90c19.98009396.js
new file mode 100644
index 000000000..637ad73e5
--- /dev/null
+++ b/assets/js/91b90c19.98009396.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[892],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/91e63cf7.ca58e95d.js b/assets/js/91e63cf7.ca58e95d.js
new file mode 100644
index 000000000..b7baace1a
--- /dev/null
+++ b/assets/js/91e63cf7.ca58e95d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7986],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>k});var a=n(67294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9216ddc9.2b48c092.js b/assets/js/9216ddc9.2b48c092.js
deleted file mode 100644
index 1c1f08437..000000000
--- a/assets/js/9216ddc9.2b48c092.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2929],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9216ddc9.cf149453.js b/assets/js/9216ddc9.cf149453.js
new file mode 100644
index 000000000..2812aea9a
--- /dev/null
+++ b/assets/js/9216ddc9.cf149453.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2929],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>h});var a=t(67294);function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function n(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/92754ac2.a2dd36a1.js b/assets/js/92754ac2.a2dd36a1.js
new file mode 100644
index 000000000..8dd25baa3
--- /dev/null
+++ b/assets/js/92754ac2.a2dd36a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1258],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/92ec0124.a1c382e9.js b/assets/js/92ec0124.a1c382e9.js
new file mode 100644
index 000000000..2969152cc
--- /dev/null
+++ b/assets/js/92ec0124.a1c382e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7430],{3905:(e,n,r)=>{r.d(n,{Zo:()=>c,kt:()=>m});var t=r(67294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.219550b5.js b/assets/js/935f2afb.219550b5.js
new file mode 100644
index 000000000..9c2a5b5e5
--- /dev/null
+++ b/assets/js/935f2afb.219550b5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Getting started","items":[{"type":"link","label":"Introduction to Apache Druid","href":"/docs/29.0.0/design/","docId":"design/index"},{"type":"link","label":"Quickstart (local)","href":"/docs/ [...]
\ No newline at end of file
diff --git a/assets/js/935f2afb.d18a490d.js b/assets/js/935f2afb.d18a490d.js
new file mode 100644
index 000000000..da2d4e630
--- /dev/null
+++ b/assets/js/935f2afb.d18a490d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Getting started","items":[{"type":"link","label":"Introduction to Apache Druid","href":"/docs/latest/design/","docId":"design/index"},{"type":"link","label":"Quickstart (local)","href":"/docs/ [...]
\ No newline at end of file
diff --git a/assets/js/941133d2.df5d8313.js b/assets/js/941133d2.df5d8313.js
new file mode 100644
index 000000000..7726567b0
--- /dev/null
+++ b/assets/js/941133d2.df5d8313.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6268],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/94aa3d86.0100b836.js b/assets/js/94aa3d86.0100b836.js
new file mode 100644
index 000000000..c29aa43de
--- /dev/null
+++ b/assets/js/94aa3d86.0100b836.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[166],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>g});var r=n(67294);function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function d(t){for(var e=1 [...]
\ No newline at end of file
diff --git a/assets/js/9537a24c.5ee59965.js b/assets/js/9537a24c.5ee59965.js
new file mode 100644
index 000000000..1e4f39296
--- /dev/null
+++ b/assets/js/9537a24c.5ee59965.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8705],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/95eaac7a.cf551134.js b/assets/js/95eaac7a.cf551134.js
new file mode 100644
index 000000000..6a8ea8df3
--- /dev/null
+++ b/assets/js/95eaac7a.cf551134.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8683],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var r=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/96217456.7069dac1.js b/assets/js/96217456.7069dac1.js
new file mode 100644
index 000000000..7834a3f1c
--- /dev/null
+++ b/assets/js/96217456.7069dac1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9434],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9636e5c7.e1eb8f49.js b/assets/js/9636e5c7.e1eb8f49.js
new file mode 100644
index 000000000..34185c062
--- /dev/null
+++ b/assets/js/9636e5c7.e1eb8f49.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4662],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/98453339.26609af0.js b/assets/js/98453339.26609af0.js
new file mode 100644
index 000000000..128161e74
--- /dev/null
+++ b/assets/js/98453339.26609af0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2206],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/993fdb06.526a9a51.js b/assets/js/993fdb06.526a9a51.js
new file mode 100644
index 000000000..9aa2f3ac4
--- /dev/null
+++ b/assets/js/993fdb06.526a9a51.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4258],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/99d91b5a.b3b27599.js b/assets/js/99d91b5a.b3b27599.js
new file mode 100644
index 000000000..9f499e8ac
--- /dev/null
+++ b/assets/js/99d91b5a.b3b27599.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3470],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9a41d3c9.12c56391.js b/assets/js/9a41d3c9.12c56391.js
new file mode 100644
index 000000000..5e0ac692e
--- /dev/null
+++ b/assets/js/9a41d3c9.12c56391.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[397],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function p(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/9af5fee7.7d818885.js b/assets/js/9af5fee7.7d818885.js
new file mode 100644
index 000000000..22307998e
--- /dev/null
+++ b/assets/js/9af5fee7.7d818885.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5795],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9b520f78.77f3f09e.js b/assets/js/9b520f78.77f3f09e.js
new file mode 100644
index 000000000..a0047437a
--- /dev/null
+++ b/assets/js/9b520f78.77f3f09e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7890],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9c46ead5.0d697bcb.js b/assets/js/9c46ead5.0d697bcb.js
new file mode 100644
index 000000000..a7007e3e4
--- /dev/null
+++ b/assets/js/9c46ead5.0d697bcb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3839],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>u});var i=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/9dd30c58.481a228c.js b/assets/js/9dd30c58.481a228c.js
deleted file mode 100644
index 28b2cff9a..000000000
--- a/assets/js/9dd30c58.481a228c.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[595],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/9dd30c58.a986960f.js b/assets/js/9dd30c58.a986960f.js
new file mode 100644
index 000000000..b25a54fd4
--- /dev/null
+++ b/assets/js/9dd30c58.a986960f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[595],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/9e519bb2.ce1b3720.js b/assets/js/9e519bb2.ce1b3720.js
new file mode 100644
index 000000000..8bb6f35bc
--- /dev/null
+++ b/assets/js/9e519bb2.ce1b3720.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5005],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/a0538546.8897931b.js b/assets/js/a0538546.8897931b.js
new file mode 100644
index 000000000..e9602ba2e
--- /dev/null
+++ b/assets/js/a0538546.8897931b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4740],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>g});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/a0cfed8c.c6f76726.js b/assets/js/a0cfed8c.c6f76726.js
new file mode 100644
index 000000000..0eb100464
--- /dev/null
+++ b/assets/js/a0cfed8c.c6f76726.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1778],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function l(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/a1bd808f.b82a0324.js b/assets/js/a1bd808f.b82a0324.js
new file mode 100644
index 000000000..ebb7c14c2
--- /dev/null
+++ b/assets/js/a1bd808f.b82a0324.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2184],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/a1d693f4.3de35b08.js b/assets/js/a1d693f4.3de35b08.js
new file mode 100644
index 000000000..306a0a47a
--- /dev/null
+++ b/assets/js/a1d693f4.3de35b08.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7819],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/a25872ab.832b9894.js b/assets/js/a25872ab.832b9894.js
new file mode 100644
index 000000000..d089b10d4
--- /dev/null
+++ b/assets/js/a25872ab.832b9894.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7984],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/a2b332f7.b21ffb39.js b/assets/js/a2b332f7.b21ffb39.js
new file mode 100644
index 000000000..46c31ab69
--- /dev/null
+++ b/assets/js/a2b332f7.b21ffb39.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[752],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/a2f5bdb0.aa7eb400.js b/assets/js/a2f5bdb0.aa7eb400.js
new file mode 100644
index 000000000..b905a41bb
--- /dev/null
+++ b/assets/js/a2f5bdb0.aa7eb400.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5852],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>h});var a=t(67294);function s(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function n(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);r&&(a=a.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/a8e19f39.4592ea89.js b/assets/js/a8e19f39.4592ea89.js
new file mode 100644
index 000000000..3d7b9b26e
--- /dev/null
+++ b/assets/js/a8e19f39.4592ea89.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1595],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>y});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/a94c6434.d08b1e24.js b/assets/js/a94c6434.d08b1e24.js
new file mode 100644
index 000000000..784cc93a6
--- /dev/null
+++ b/assets/js/a94c6434.d08b1e24.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[52],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e=1; [...]
\ No newline at end of file
diff --git a/assets/js/aac9aa13.9fb629ed.js b/assets/js/aac9aa13.9fb629ed.js
new file mode 100644
index 000000000..02ea02845
--- /dev/null
+++ b/assets/js/aac9aa13.9fb629ed.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6357],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ab046938.5dd20524.js b/assets/js/ab046938.5dd20524.js
new file mode 100644
index 000000000..71a78cdfb
--- /dev/null
+++ b/assets/js/ab046938.5dd20524.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7492],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ab897d12.1ed03d2e.js b/assets/js/ab897d12.1ed03d2e.js
new file mode 100644
index 000000000..9b2e7d0b9
--- /dev/null
+++ b/assets/js/ab897d12.1ed03d2e.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2776],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ac78a47c.9cbde4c3.js b/assets/js/ac78a47c.9cbde4c3.js
new file mode 100644
index 000000000..acf07d019
--- /dev/null
+++ b/assets/js/ac78a47c.9cbde4c3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2695],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/aded680a.7eaf00d1.js b/assets/js/aded680a.7eaf00d1.js
new file mode 100644
index 000000000..7cab8d8ea
--- /dev/null
+++ b/assets/js/aded680a.7eaf00d1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7355],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/af06fdec.ec0839e3.js b/assets/js/af06fdec.ec0839e3.js
new file mode 100644
index 000000000..7136699da
--- /dev/null
+++ b/assets/js/af06fdec.ec0839e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5377],{3905:(t,e,n)=>{n.d(e,{Zo:()=>s,kt:()=>k});var a=n(67294);function i(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/af159704.1e1dbb43.js b/assets/js/af159704.1e1dbb43.js
new file mode 100644
index 000000000..6294a23c7
--- /dev/null
+++ b/assets/js/af159704.1e1dbb43.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3950],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>c});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b019fc37.947c79e6.js b/assets/js/b019fc37.947c79e6.js
new file mode 100644
index 000000000..fc3ca8bf0
--- /dev/null
+++ b/assets/js/b019fc37.947c79e6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5748],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b0b17773.36e5017a.js b/assets/js/b0b17773.36e5017a.js
new file mode 100644
index 000000000..2c672f845
--- /dev/null
+++ b/assets/js/b0b17773.36e5017a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9385],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>k});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b0c79e6c.0a25f8df.js b/assets/js/b0c79e6c.0a25f8df.js
deleted file mode 100644
index 102c82e25..000000000
--- a/assets/js/b0c79e6c.0a25f8df.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3907],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b0c79e6c.d13182c8.js b/assets/js/b0c79e6c.d13182c8.js
new file mode 100644
index 000000000..50b63011e
--- /dev/null
+++ b/assets/js/b0c79e6c.d13182c8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3907],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b174ad29.9a13ce18.js b/assets/js/b174ad29.9a13ce18.js
new file mode 100644
index 000000000..4b6a0cd4a
--- /dev/null
+++ b/assets/js/b174ad29.9a13ce18.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8572],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/b213d090.e86cb13b.js b/assets/js/b213d090.e86cb13b.js
new file mode 100644
index 000000000..89284ad9c
--- /dev/null
+++ b/assets/js/b213d090.e86cb13b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8135],{3905:(t,e,a)=>{a.d(e,{Zo:()=>p,kt:()=>h});var n=a(67294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function r(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/b2231989.b81bfb4a.js b/assets/js/b2231989.b81bfb4a.js
new file mode 100644
index 000000000..ab85e9123
--- /dev/null
+++ b/assets/js/b2231989.b81bfb4a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4221],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b2d41fa9.1591430b.js b/assets/js/b2d41fa9.1591430b.js
new file mode 100644
index 000000000..e9a794796
--- /dev/null
+++ b/assets/js/b2d41fa9.1591430b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2272],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b2d97b87.8c13ac3f.js b/assets/js/b2d97b87.8c13ac3f.js
new file mode 100644
index 000000000..636d45571
--- /dev/null
+++ b/assets/js/b2d97b87.8c13ac3f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6902],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b307eceb.3ca1079f.js b/assets/js/b307eceb.3ca1079f.js
new file mode 100644
index 000000000..8250fab23
--- /dev/null
+++ b/assets/js/b307eceb.3ca1079f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7248],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b3507710.f99092dd.js b/assets/js/b3507710.f99092dd.js
new file mode 100644
index 000000000..2982d1266
--- /dev/null
+++ b/assets/js/b3507710.f99092dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5735],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>k});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b358c051.c6bdc00a.js b/assets/js/b358c051.c6bdc00a.js
new file mode 100644
index 000000000..2d08d447e
--- /dev/null
+++ b/assets/js/b358c051.c6bdc00a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6237],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b647b2cd.67a13c69.js b/assets/js/b647b2cd.67a13c69.js
new file mode 100644
index 000000000..7068d7eab
--- /dev/null
+++ b/assets/js/b647b2cd.67a13c69.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4038],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b6d914f5.73af5089.js b/assets/js/b6d914f5.73af5089.js
new file mode 100644
index 000000000..6e3a6a9cf
--- /dev/null
+++ b/assets/js/b6d914f5.73af5089.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9964],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b6d922f1.3bfa5b43.js b/assets/js/b6d922f1.3bfa5b43.js
new file mode 100644
index 000000000..7a69868a5
--- /dev/null
+++ b/assets/js/b6d922f1.3bfa5b43.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[9076],{3905:(e,t,r)=>{"use strict";r.d(t,{Zo:()=>p,kt:()=>w});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b6d922f1.a6354293.js b/assets/js/b6d922f1.a6354293.js
deleted file mode 100644
index 0ee0f937c..000000000
--- a/assets/js/b6d922f1.a6354293.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk=self.webpackChunk||[]).push([[9076],{3905:(e,t,r)=>{"use strict";r.d(t,{Zo:()=>p,kt:()=>w});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b75463b7.76cb827a.js b/assets/js/b75463b7.76cb827a.js
new file mode 100644
index 000000000..fa864af01
--- /dev/null
+++ b/assets/js/b75463b7.76cb827a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2417],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b8e9cb00.b4eed726.js b/assets/js/b8e9cb00.b4eed726.js
new file mode 100644
index 000000000..0cb2407e4
--- /dev/null
+++ b/assets/js/b8e9cb00.b4eed726.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8213],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>d});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b964b515.ac507fcb.js b/assets/js/b964b515.ac507fcb.js
deleted file mode 100644
index a4e19b539..000000000
--- a/assets/js/b964b515.ac507fcb.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5943],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/b964b515.c9366a58.js b/assets/js/b964b515.c9366a58.js
new file mode 100644
index 000000000..1e29739b7
--- /dev/null
+++ b/assets/js/b964b515.c9366a58.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5943],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ba471ed5.6ce98e57.js b/assets/js/ba471ed5.6ce98e57.js
new file mode 100644
index 000000000..8eaa944dc
--- /dev/null
+++ b/assets/js/ba471ed5.6ce98e57.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4084],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ba471ed5.a373f4ef.js b/assets/js/ba471ed5.a373f4ef.js
deleted file mode 100644
index 58b82cd3e..000000000
--- a/assets/js/ba471ed5.a373f4ef.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4084],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ba8ae3fa.0e18b2cb.js b/assets/js/ba8ae3fa.0e18b2cb.js
new file mode 100644
index 000000000..7731e1381
--- /dev/null
+++ b/assets/js/ba8ae3fa.0e18b2cb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1164],{3905:(e,n,t)=>{t.d(n,{Zo:()=>d,kt:()=>f});var o=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function a(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/bbfa20a6.e5d9b62b.js b/assets/js/bbfa20a6.e5d9b62b.js
new file mode 100644
index 000000000..acc64e061
--- /dev/null
+++ b/assets/js/bbfa20a6.e5d9b62b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6277],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>d});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/bd17f600.da8bbbb6.js b/assets/js/bd17f600.da8bbbb6.js
new file mode 100644
index 000000000..07c25559b
--- /dev/null
+++ b/assets/js/bd17f600.da8bbbb6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[737],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/be1891ad.54100ce9.js b/assets/js/be1891ad.54100ce9.js
new file mode 100644
index 000000000..d34b3fa75
--- /dev/null
+++ b/assets/js/be1891ad.54100ce9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7221],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/bee5d326.5390bc2c.js b/assets/js/bee5d326.5390bc2c.js
new file mode 100644
index 000000000..24b3b58d1
--- /dev/null
+++ b/assets/js/bee5d326.5390bc2c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5546],{3905:(t,e,a)=>{a.d(e,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/c0161e79.1475e2aa.js b/assets/js/c0161e79.1475e2aa.js
new file mode 100644
index 000000000..bfde04298
--- /dev/null
+++ b/assets/js/c0161e79.1475e2aa.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7269],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c0161e79.ad9f5faf.js b/assets/js/c0161e79.ad9f5faf.js
deleted file mode 100644
index 7368c89a1..000000000
--- a/assets/js/c0161e79.ad9f5faf.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7269],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c0995780.7f1d4065.js b/assets/js/c0995780.7f1d4065.js
new file mode 100644
index 000000000..838ee80c8
--- /dev/null
+++ b/assets/js/c0995780.7f1d4065.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5098],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c233c888.70421ba6.js b/assets/js/c233c888.70421ba6.js
new file mode 100644
index 000000000..5a5d584b8
--- /dev/null
+++ b/assets/js/c233c888.70421ba6.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4274],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>m});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c2ae6274.39176d8a.js b/assets/js/c2ae6274.39176d8a.js
new file mode 100644
index 000000000..a04724af3
--- /dev/null
+++ b/assets/js/c2ae6274.39176d8a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2754],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c35a7924.ae3f9ae8.js b/assets/js/c35a7924.ae3f9ae8.js
new file mode 100644
index 000000000..99e5ca403
--- /dev/null
+++ b/assets/js/c35a7924.ae3f9ae8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2825],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>m});var n=t(67294);function i(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/c3bd4d0f.ae9217db.js b/assets/js/c3bd4d0f.ae9217db.js
new file mode 100644
index 000000000..ecbe76d8c
--- /dev/null
+++ b/assets/js/c3bd4d0f.ae9217db.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1087],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c4a9afd3.5141d653.js b/assets/js/c4a9afd3.5141d653.js
new file mode 100644
index 000000000..d138b47e4
--- /dev/null
+++ b/assets/js/c4a9afd3.5141d653.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6780],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c4eaa713.a962883d.js b/assets/js/c4eaa713.a962883d.js
new file mode 100644
index 000000000..c5ef63599
--- /dev/null
+++ b/assets/js/c4eaa713.a962883d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8337],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var r=t(67294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.78d5e472.js b/assets/js/c4f5d8e4.78d5e472.js
deleted file mode 100644
index 94df2db78..000000000
--- a/assets/js/c4f5d8e4.78d5e472.js
+++ /dev/null
@@ -1 +0,0 @@
-(self.webpackChunk=self.webpackChunk||[]).push([[4195],{99845:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>f});var n=t(70063),i=t(67294);function l(e){var a=e.data;return i.createElement("div",{className:"druid-feature"},i.createElement("h5",null,a.title),i.createElement("p",null,a.description))}function r(e){var a=e.jsonData;return i.createElement("div",{className:"druid-feature-container"},a.map((function(e){return i.createElement(l,{key:e.id,data:e})})))}var s=[{title:"Interactive [...]
\ No newline at end of file
diff --git a/assets/js/c4f5d8e4.aee9fefb.js b/assets/js/c4f5d8e4.aee9fefb.js
new file mode 100644
index 000000000..77e86e3df
--- /dev/null
+++ b/assets/js/c4f5d8e4.aee9fefb.js
@@ -0,0 +1 @@
+(self.webpackChunk=self.webpackChunk||[]).push([[4195],{99845:(e,a,t)=>{"use strict";t.r(a),t.d(a,{default:()=>f});var n=t(70063),i=t(67294);function l(e){var a=e.data;return i.createElement("div",{className:"druid-feature"},i.createElement("h5",null,a.title),i.createElement("p",null,a.description))}function r(e){var a=e.jsonData;return i.createElement("div",{className:"druid-feature-container"},a.map((function(e){return i.createElement(l,{key:e.id,data:e})})))}var s=[{title:"Interactive [...]
\ No newline at end of file
diff --git a/assets/js/c5224f77.98816c07.js b/assets/js/c5224f77.98816c07.js
new file mode 100644
index 000000000..373e578f0
--- /dev/null
+++ b/assets/js/c5224f77.98816c07.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9570],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c5760f30.f6c45127.js b/assets/js/c5760f30.f6c45127.js
new file mode 100644
index 000000000..e9ba8ba46
--- /dev/null
+++ b/assets/js/c5760f30.f6c45127.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1203],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c6999de6.c6510e0a.js b/assets/js/c6999de6.c6510e0a.js
new file mode 100644
index 000000000..601d4a4a9
--- /dev/null
+++ b/assets/js/c6999de6.c6510e0a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9837],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c704e2c0.dee0a548.js b/assets/js/c704e2c0.dee0a548.js
new file mode 100644
index 000000000..bfa21c8b6
--- /dev/null
+++ b/assets/js/c704e2c0.dee0a548.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5199],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c7bb32c0.9acf0668.js b/assets/js/c7bb32c0.9acf0668.js
new file mode 100644
index 000000000..29c1a7ae8
--- /dev/null
+++ b/assets/js/c7bb32c0.9acf0668.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3174],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>g});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c87bd0b3.ea050f30.js b/assets/js/c87bd0b3.ea050f30.js
new file mode 100644
index 000000000..54b5d4e09
--- /dev/null
+++ b/assets/js/c87bd0b3.ea050f30.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6189],{3905:(e,t,n)=>{n.d(t,{Zo:()=>l,kt:()=>g});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c89bccce.7b31a4c1.js b/assets/js/c89bccce.7b31a4c1.js
new file mode 100644
index 000000000..72244bf8a
--- /dev/null
+++ b/assets/js/c89bccce.7b31a4c1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9772],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c971ecb2.4362f2dd.js b/assets/js/c971ecb2.4362f2dd.js
new file mode 100644
index 000000000..05077c212
--- /dev/null
+++ b/assets/js/c971ecb2.4362f2dd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6951],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>y});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/c9fa3e8f.c2d9c85f.js b/assets/js/c9fa3e8f.c2d9c85f.js
new file mode 100644
index 000000000..916a7306d
--- /dev/null
+++ b/assets/js/c9fa3e8f.c2d9c85f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6686],{3905:(t,e,n)=>{n.d(e,{Zo:()=>d,kt:()=>c});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function l(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/caadb9e4.b6a9a59c.js b/assets/js/caadb9e4.b6a9a59c.js
new file mode 100644
index 000000000..0585cabc7
--- /dev/null
+++ b/assets/js/caadb9e4.b6a9a59c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1522],{3905:(t,e,n)=>{n.d(e,{Zo:()=>m,kt:()=>g});var a=n(67294);function l(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/caed696f.63204d3c.js b/assets/js/caed696f.63204d3c.js
new file mode 100644
index 000000000..16257b4c6
--- /dev/null
+++ b/assets/js/caed696f.63204d3c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3770],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>c});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/cc2b1268.1b07cfcd.js b/assets/js/cc2b1268.1b07cfcd.js
new file mode 100644
index 000000000..2653419dd
--- /dev/null
+++ b/assets/js/cc2b1268.1b07cfcd.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8367],{3905:(e,t,r)=>{r.d(t,{Zo:()=>l,kt:()=>f});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cc5f8c18.a28508ea.js b/assets/js/cc5f8c18.a28508ea.js
new file mode 100644
index 000000000..90297cd26
--- /dev/null
+++ b/assets/js/cc5f8c18.a28508ea.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4579],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>f});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ccecb300.632499ae.js b/assets/js/ccecb300.632499ae.js
new file mode 100644
index 000000000..cb851d21a
--- /dev/null
+++ b/assets/js/ccecb300.632499ae.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4680],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cd07172b.00a782e1.js b/assets/js/cd07172b.00a782e1.js
new file mode 100644
index 000000000..8bf8c6003
--- /dev/null
+++ b/assets/js/cd07172b.00a782e1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9777],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cd22c7ca.1fb99329.js b/assets/js/cd22c7ca.1fb99329.js
new file mode 100644
index 000000000..2583949ab
--- /dev/null
+++ b/assets/js/cd22c7ca.1fb99329.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8069],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cd22c7ca.9df35a85.js b/assets/js/cd22c7ca.9df35a85.js
deleted file mode 100644
index 191ba90b3..000000000
--- a/assets/js/cd22c7ca.9df35a85.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8069],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cd770d37.81e0dcee.js b/assets/js/cd770d37.81e0dcee.js
new file mode 100644
index 000000000..33889cb4c
--- /dev/null
+++ b/assets/js/cd770d37.81e0dcee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4730],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>c});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cdec71b5.b34313c4.js b/assets/js/cdec71b5.b34313c4.js
new file mode 100644
index 000000000..04200434f
--- /dev/null
+++ b/assets/js/cdec71b5.b34313c4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8008],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>g});var a=t(67294);function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/ce3c7d34.40bed509.js b/assets/js/ce3c7d34.40bed509.js
new file mode 100644
index 000000000..9b9fb4ad2
--- /dev/null
+++ b/assets/js/ce3c7d34.40bed509.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9350],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>y});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ce66ed34.ff0662e3.js b/assets/js/ce66ed34.ff0662e3.js
new file mode 100644
index 000000000..5bb2ac81e
--- /dev/null
+++ b/assets/js/ce66ed34.ff0662e3.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9756],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>m});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cea8fd56.3cc1c21b.js b/assets/js/cea8fd56.3cc1c21b.js
deleted file mode 100644
index 5c78f2479..000000000
--- a/assets/js/cea8fd56.3cc1c21b.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5773],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cea8fd56.e216baa8.js b/assets/js/cea8fd56.e216baa8.js
new file mode 100644
index 000000000..a65ba4b72
--- /dev/null
+++ b/assets/js/cea8fd56.e216baa8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5773],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/cff5438d.2eb62d05.js b/assets/js/cff5438d.2eb62d05.js
new file mode 100644
index 000000000..9b0cf5888
--- /dev/null
+++ b/assets/js/cff5438d.2eb62d05.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1634],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>g});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d05fa046.fabf2290.js b/assets/js/d05fa046.fabf2290.js
new file mode 100644
index 000000000..79492d258
--- /dev/null
+++ b/assets/js/d05fa046.fabf2290.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3827],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d099cfd7.7fc85cd5.js b/assets/js/d099cfd7.7fc85cd5.js
new file mode 100644
index 000000000..8ef862c27
--- /dev/null
+++ b/assets/js/d099cfd7.7fc85cd5.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9083],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>u});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d09adf36.59363a49.js b/assets/js/d09adf36.59363a49.js
new file mode 100644
index 000000000..f30ca1048
--- /dev/null
+++ b/assets/js/d09adf36.59363a49.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6351],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d10cff76.4c68c43a.js b/assets/js/d10cff76.4c68c43a.js
new file mode 100644
index 000000000..2827e857e
--- /dev/null
+++ b/assets/js/d10cff76.4c68c43a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5520],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>y});var a=t(67294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/d20adcc9.660ee0a1.js b/assets/js/d20adcc9.660ee0a1.js
new file mode 100644
index 000000000..6174e3cd3
--- /dev/null
+++ b/assets/js/d20adcc9.660ee0a1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9632],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d348e71d.64acf387.js b/assets/js/d348e71d.64acf387.js
new file mode 100644
index 000000000..0178863d9
--- /dev/null
+++ b/assets/js/d348e71d.64acf387.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4612],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/d800148d.809f2467.js b/assets/js/d800148d.809f2467.js
new file mode 100644
index 000000000..1aa232d01
--- /dev/null
+++ b/assets/js/d800148d.809f2467.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7024],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>c});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function o(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/db509a08.98017939.js b/assets/js/db509a08.98017939.js
new file mode 100644
index 000000000..66ac7fdd1
--- /dev/null
+++ b/assets/js/db509a08.98017939.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5971],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dc3899c8.1ae1b487.js b/assets/js/dc3899c8.1ae1b487.js
new file mode 100644
index 000000000..e6418eb16
--- /dev/null
+++ b/assets/js/dc3899c8.1ae1b487.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4459],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>y});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dc670d7c.bbdddac1.js b/assets/js/dc670d7c.bbdddac1.js
new file mode 100644
index 000000000..ac45c37f2
--- /dev/null
+++ b/assets/js/dc670d7c.bbdddac1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[758],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var o=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function r(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/dc86ecba.0de818c7.js b/assets/js/dc86ecba.0de818c7.js
new file mode 100644
index 000000000..da836f28b
--- /dev/null
+++ b/assets/js/dc86ecba.0de818c7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2374],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dc86ecba.45d14f17.js b/assets/js/dc86ecba.45d14f17.js
deleted file mode 100644
index 85a6877d6..000000000
--- a/assets/js/dc86ecba.45d14f17.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2374],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dcd3699e.638b86e9.js b/assets/js/dcd3699e.638b86e9.js
new file mode 100644
index 000000000..af9e524e0
--- /dev/null
+++ b/assets/js/dcd3699e.638b86e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9363],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>g});var i=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/dd08839c.318d6fe9.js b/assets/js/dd08839c.318d6fe9.js
new file mode 100644
index 000000000..b75922f62
--- /dev/null
+++ b/assets/js/dd08839c.318d6fe9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1239],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dd5346cc.b0d10743.js b/assets/js/dd5346cc.b0d10743.js
new file mode 100644
index 000000000..1d9ac2c4f
--- /dev/null
+++ b/assets/js/dd5346cc.b0d10743.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1739],{3905:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>N});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/dd5c39f7.6fdce2c0.js b/assets/js/dd5c39f7.6fdce2c0.js
new file mode 100644
index 000000000..ae59a373c
--- /dev/null
+++ b/assets/js/dd5c39f7.6fdce2c0.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5975],{3905:(e,o,n)=>{n.d(o,{Zo:()=>p,kt:()=>m});var a=n(67294);function t(e,o,n){return o in e?Object.defineProperty(e,o,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[o]=n,e}function r(e,o){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);o&&(a=a.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var o= [...]
\ No newline at end of file
diff --git a/assets/js/dec790ad.6df46cb4.js b/assets/js/dec790ad.6df46cb4.js
new file mode 100644
index 000000000..28ae02e5e
--- /dev/null
+++ b/assets/js/dec790ad.6df46cb4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6116],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e42f7105.1b2ea53d.js b/assets/js/e42f7105.1b2ea53d.js
new file mode 100644
index 000000000..7153521da
--- /dev/null
+++ b/assets/js/e42f7105.1b2ea53d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2975],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e44d1fc1.667f6903.js b/assets/js/e44d1fc1.667f6903.js
new file mode 100644
index 000000000..3eefbb97c
--- /dev/null
+++ b/assets/js/e44d1fc1.667f6903.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1758],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e577ad77.9fef75e1.js b/assets/js/e577ad77.9fef75e1.js
new file mode 100644
index 000000000..5832fdb58
--- /dev/null
+++ b/assets/js/e577ad77.9fef75e1.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3993],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e5b4ea37.bf7735eb.js b/assets/js/e5b4ea37.bf7735eb.js
new file mode 100644
index 000000000..9ce22e5f5
--- /dev/null
+++ b/assets/js/e5b4ea37.bf7735eb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7941],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e6ea7cb8.a0f85c34.js b/assets/js/e6ea7cb8.a0f85c34.js
deleted file mode 100644
index d66185fd5..000000000
--- a/assets/js/e6ea7cb8.a0f85c34.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2561],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var r=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e6ea7cb8.d9b35549.js b/assets/js/e6ea7cb8.d9b35549.js
new file mode 100644
index 000000000..020076969
--- /dev/null
+++ b/assets/js/e6ea7cb8.d9b35549.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2561],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>h});var a=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e7087650.f0c11cf8.js b/assets/js/e7087650.f0c11cf8.js
new file mode 100644
index 000000000..71beeab6d
--- /dev/null
+++ b/assets/js/e7087650.f0c11cf8.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5724],{3905:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>h});var n=r(67294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e771c2cf.ae085ac4.js b/assets/js/e771c2cf.ae085ac4.js
new file mode 100644
index 000000000..7d810a7f6
--- /dev/null
+++ b/assets/js/e771c2cf.ae085ac4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5765],{3905:(e,r,t)=>{t.d(r,{Zo:()=>l,kt:()=>m});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function o(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/e7f0645b.bd9c88fb.js b/assets/js/e7f0645b.bd9c88fb.js
new file mode 100644
index 000000000..7de09791a
--- /dev/null
+++ b/assets/js/e7f0645b.bd9c88fb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9217],{3905:(e,r,t)=>{t.d(r,{Zo:()=>u,kt:()=>h});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/e826572d.de285e36.js b/assets/js/e826572d.de285e36.js
new file mode 100644
index 000000000..b22f2ee17
--- /dev/null
+++ b/assets/js/e826572d.de285e36.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8053],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e89091c2.2a9eaf86.js b/assets/js/e89091c2.2a9eaf86.js
new file mode 100644
index 000000000..a65980c9a
--- /dev/null
+++ b/assets/js/e89091c2.2a9eaf86.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2881],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>v});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/e988a960.2f81cda2.js b/assets/js/e988a960.2f81cda2.js
new file mode 100644
index 000000000..0dde068d6
--- /dev/null
+++ b/assets/js/e988a960.2f81cda2.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2681],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>y});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/ec47ab22.16d9d6ee.js b/assets/js/ec47ab22.16d9d6ee.js
deleted file mode 100644
index a2ae97345..000000000
--- a/assets/js/ec47ab22.16d9d6ee.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5468],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>g});var s=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function o(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);r&&(s=s.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,s)}return t}function n(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/ec725065.b5437684.js b/assets/js/ec725065.b5437684.js
new file mode 100644
index 000000000..c9720f826
--- /dev/null
+++ b/assets/js/ec725065.b5437684.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7542],{3905:(e,r,t)=>{t.d(r,{Zo:()=>c,kt:()=>g});var n=t(67294);function o(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function a(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function i(e){for(var r= [...]
\ No newline at end of file
diff --git a/assets/js/ec931258.fc9586a9.js b/assets/js/ec931258.fc9586a9.js
new file mode 100644
index 000000000..07b1e6989
--- /dev/null
+++ b/assets/js/ec931258.fc9586a9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6459],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>h});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ecf09596.71296534.js b/assets/js/ecf09596.71296534.js
new file mode 100644
index 000000000..64b04439f
--- /dev/null
+++ b/assets/js/ecf09596.71296534.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8128],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>h});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ee0b5f0e.a3dc2d84.js b/assets/js/ee0b5f0e.a3dc2d84.js
new file mode 100644
index 000000000..872c19d0d
--- /dev/null
+++ b/assets/js/ee0b5f0e.a3dc2d84.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3459],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f04833a0.9554dee7.js b/assets/js/f04833a0.9554dee7.js
new file mode 100644
index 000000000..26d5c0fe4
--- /dev/null
+++ b/assets/js/f04833a0.9554dee7.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8390],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>f});var o=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function n(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f0b33a95.c74e816d.js b/assets/js/f0b33a95.c74e816d.js
new file mode 100644
index 000000000..fa3f456ce
--- /dev/null
+++ b/assets/js/f0b33a95.c74e816d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[981],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>v});var r=n(67294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/f0e31bc8.36fb3eab.js b/assets/js/f0e31bc8.36fb3eab.js
new file mode 100644
index 000000000..49009f999
--- /dev/null
+++ b/assets/js/f0e31bc8.36fb3eab.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8707],{3905:(t,e,n)=>{n.d(e,{Zo:()=>p,kt:()=>g});var a=n(67294);function r(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function o(t){for(var e= [...]
\ No newline at end of file
diff --git a/assets/js/f3422945.7ece9949.js b/assets/js/f3422945.7ece9949.js
new file mode 100644
index 000000000..224ff0a6a
--- /dev/null
+++ b/assets/js/f3422945.7ece9949.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8797],{3905:(e,t,r)=>{r.d(t,{Zo:()=>c,kt:()=>f});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function a(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f5acae74.7b6ff7e9.js b/assets/js/f5acae74.7b6ff7e9.js
new file mode 100644
index 000000000..433346e20
--- /dev/null
+++ b/assets/js/f5acae74.7b6ff7e9.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2909],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var i=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f5f3bf76.5c8c336c.js b/assets/js/f5f3bf76.5c8c336c.js
new file mode 100644
index 000000000..4061f86f2
--- /dev/null
+++ b/assets/js/f5f3bf76.5c8c336c.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1280],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>f});var a=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f601ecc3.d977d1a4.js b/assets/js/f601ecc3.d977d1a4.js
new file mode 100644
index 000000000..27c166874
--- /dev/null
+++ b/assets/js/f601ecc3.d977d1a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2046],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>f});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f7252a63.2b66f02d.js b/assets/js/f7252a63.2b66f02d.js
new file mode 100644
index 000000000..8c8a1c1e1
--- /dev/null
+++ b/assets/js/f7252a63.2b66f02d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1893],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>y});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f782f0c3.036102a4.js b/assets/js/f782f0c3.036102a4.js
new file mode 100644
index 000000000..e4e7d9192
--- /dev/null
+++ b/assets/js/f782f0c3.036102a4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[185],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>g});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function s(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/f8b35359.dc1c0a48.js b/assets/js/f8b35359.dc1c0a48.js
new file mode 100644
index 000000000..06151c609
--- /dev/null
+++ b/assets/js/f8b35359.dc1c0a48.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6440],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>g});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/f8ca60be.70e2d0d4.js b/assets/js/f8ca60be.70e2d0d4.js
new file mode 100644
index 000000000..f53caf05b
--- /dev/null
+++ b/assets/js/f8ca60be.70e2d0d4.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2339],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>N});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fa493215.9a43c59f.js b/assets/js/fa493215.9a43c59f.js
new file mode 100644
index 000000000..750aa20d7
--- /dev/null
+++ b/assets/js/fa493215.9a43c59f.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9934],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fa98c789.1a9ab9eb.js b/assets/js/fa98c789.1a9ab9eb.js
new file mode 100644
index 000000000..bf8bebc64
--- /dev/null
+++ b/assets/js/fa98c789.1a9ab9eb.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2791],{3905:(e,t,a)=>{a.d(t,{Zo:()=>p,kt:()=>h});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fa9c8cab.f07f995b.js b/assets/js/fa9c8cab.f07f995b.js
new file mode 100644
index 000000000..81c705f66
--- /dev/null
+++ b/assets/js/fa9c8cab.f07f995b.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[813],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>g});var o=r(67294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/fab582b2.8fe58274.js b/assets/js/fab582b2.8fe58274.js
new file mode 100644
index 000000000..4aa5044fe
--- /dev/null
+++ b/assets/js/fab582b2.8fe58274.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6049],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>g});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fac897f3.6c1caa13.js b/assets/js/fac897f3.6c1caa13.js
new file mode 100644
index 000000000..89cdbf9b7
--- /dev/null
+++ b/assets/js/fac897f3.6c1caa13.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[8628],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>p});var n=a(67294);function i(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function s(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/faf0402f.ac406d0a.js b/assets/js/faf0402f.ac406d0a.js
new file mode 100644
index 000000000..473fb2677
--- /dev/null
+++ b/assets/js/faf0402f.ac406d0a.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9207],{3905:(e,t,a)=>{a.d(t,{Zo:()=>m,kt:()=>f});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function r(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fb0a26d1.397d5277.js b/assets/js/fb0a26d1.397d5277.js
new file mode 100644
index 000000000..4aad39455
--- /dev/null
+++ b/assets/js/fb0a26d1.397d5277.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2275],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>u});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fb83fc4a.3eef1277.js b/assets/js/fb83fc4a.3eef1277.js
new file mode 100644
index 000000000..ce31acc87
--- /dev/null
+++ b/assets/js/fb83fc4a.3eef1277.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1623],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>f});var a=t(67294);function l(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/fc3af10a.bbc66a3d.js b/assets/js/fc3af10a.bbc66a3d.js
new file mode 100644
index 000000000..b6b7a4ac6
--- /dev/null
+++ b/assets/js/fc3af10a.bbc66a3d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7230],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>k});var n=a(67294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fc6289eb.96cceb80.js b/assets/js/fc6289eb.96cceb80.js
new file mode 100644
index 000000000..709493b40
--- /dev/null
+++ b/assets/js/fc6289eb.96cceb80.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1697],{3905:(e,n,t)=>{t.d(n,{Zo:()=>p,kt:()=>y});var a=t(67294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n= [...]
\ No newline at end of file
diff --git a/assets/js/fe77072c.c6796000.js b/assets/js/fe77072c.c6796000.js
new file mode 100644
index 000000000..5c2d8f4eb
--- /dev/null
+++ b/assets/js/fe77072c.c6796000.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6452],{3905:(e,t,n)=>{n.d(t,{Zo:()=>m,kt:()=>k});var r=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/fe8f4de1.476856ee.js b/assets/js/fe8f4de1.476856ee.js
new file mode 100644
index 000000000..be8f17b2c
--- /dev/null
+++ b/assets/js/fe8f4de1.476856ee.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3101],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>y});var n=r(67294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/feb31aca.180e5600.js b/assets/js/feb31aca.180e5600.js
new file mode 100644
index 000000000..19d2278a0
--- /dev/null
+++ b/assets/js/feb31aca.180e5600.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1349],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>d});var r=n(67294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ff52e0a2.1cd16d5d.js b/assets/js/ff52e0a2.1cd16d5d.js
new file mode 100644
index 000000000..e8e65be5c
--- /dev/null
+++ b/assets/js/ff52e0a2.1cd16d5d.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3089],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t= [...]
\ No newline at end of file
diff --git a/assets/js/ff6b2e0d.9b462181.js b/assets/js/ff6b2e0d.9b462181.js
new file mode 100644
index 000000000..f8ba2dd92
--- /dev/null
+++ b/assets/js/ff6b2e0d.9b462181.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[979],{3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>d});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1 [...]
\ No newline at end of file
diff --git a/assets/js/main.66359c18.js b/assets/js/main.66359c18.js
new file mode 100644
index 000000000..48c0a05b7
--- /dev/null
+++ b/assets/js/main.66359c18.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.66359c18.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),o=n(87462),a=n(68356),i=n.n(a),s=n(16887);const l={"01019b7b":[function(){return n.e(3079).then(n.bind(n,6660))},"@site/docs/latest/tutorials/cluster.md",6660],"01286a6a":[function(){return n.e(5621).then(n.bind(n,24097))},"@site/docs/latest/development/extensions-core/parquet.md",24097],"0165ae86":[function(){return n.e(5284).then(n.bind(n,56178))},"@site/docs/latest/develop [...]
\ No newline at end of file
diff --git a/assets/js/main.d6cc924f.js.LICENSE.txt b/assets/js/main.66359c18.js.LICENSE.txt
similarity index 100%
copy from assets/js/main.d6cc924f.js.LICENSE.txt
copy to assets/js/main.66359c18.js.LICENSE.txt
diff --git a/assets/js/main.9edfa408.js b/assets/js/main.9edfa408.js
new file mode 100644
index 000000000..18fdfbe4a
--- /dev/null
+++ b/assets/js/main.9edfa408.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.9edfa408.js.LICENSE.txt */
+(self.webpackChunk=self.webpackChunk||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),o=n(87462),a=n(68356),i=n.n(a),s=n(16887);const c={"008dc6c0":[function(){return n.e(855).then(n.bind(n,52555))},"@site/docs/29.0.0/operations/metadata-migration.md",52555],"0109f7c7":[function(){return n.e(6819).then(n.bind(n,23217))},"@site/docs/29.0.0/operations/insert-segment-to-db.md",23217],"035ed994":[function(){return n.e(2159).then(n.bind(n,73089))},"@site/docs/29.0. [...]
\ No newline at end of file
diff --git a/assets/js/main.d6cc924f.js.LICENSE.txt b/assets/js/main.9edfa408.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.d6cc924f.js.LICENSE.txt
rename to assets/js/main.9edfa408.js.LICENSE.txt
diff --git a/assets/js/main.d6cc924f.js b/assets/js/main.d6cc924f.js
deleted file mode 100644
index 3e7dc4d73..000000000
--- a/assets/js/main.d6cc924f.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.d6cc924f.js.LICENSE.txt */
-(self.webpackChunk=self.webpackChunk||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(67294),o=n(87462),a=n(68356),i=n.n(a),s=n(16887);const l={"01019b7b":[function(){return n.e(3079).then(n.bind(n,6660))},"@site/docs/latest/tutorials/cluster.md",6660],"01286a6a":[function(){return n.e(5621).then(n.bind(n,24097))},"@site/docs/latest/development/extensions-core/parquet.md",24097],"0165ae86":[function(){return n.e(5284).then(n.bind(n,56178))},"@site/docs/latest/develop [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.06837abf.js b/assets/js/runtime~main.06837abf.js
new file mode 100644
index 000000000..5fdb50d22
--- /dev/null
+++ b/assets/js/runtime~main.06837abf.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,c,f,a,d={},b={};function r(e){var c=b[e];if(void 0!==c)return c.exports;var f=b[e]={id:e,loaded:!1,exports:{}};return d[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=d,r.c=b,e=[],r.O=(c,f,a,d)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){for(var[f,a,d]=e[i],t=!0,o=0;o<f.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=a();void 0!==n&&(c=n)}}return c}d=d||0;for(var i=e.lengt [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.5bfad63a.js b/assets/js/runtime~main.5bfad63a.js
deleted file mode 100644
index b67b9e323..000000000
--- a/assets/js/runtime~main.5bfad63a.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,c,a,f,d={},b={};function r(e){var c=b[e];if(void 0!==c)return c.exports;var a=b[e]={id:e,loaded:!1,exports:{}};return d[e].call(a.exports,a,a.exports,r),a.loaded=!0,a.exports}r.m=d,r.c=b,e=[],r.O=(c,a,f,d)=>{if(!a){var b=1/0;for(i=0;i<e.length;i++){for(var[a,f,d]=e[i],t=!0,o=0;o<a.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](a[o])))?a.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(c=n)}}return c}d=d||0;for(var i=e.lengt [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.fc3ed64b.js b/assets/js/runtime~main.fc3ed64b.js
new file mode 100644
index 000000000..2fcbadb0e
--- /dev/null
+++ b/assets/js/runtime~main.fc3ed64b.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,f,c,b,a={},d={};function r(e){var f=d[e];if(void 0!==f)return f.exports;var c=d[e]={id:e,loaded:!1,exports:{}};return a[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=a,r.c=d,e=[],r.O=(f,c,b,a)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){for(var[c,b,a]=e[i],t=!0,o=0;o<c.length;o++)(!1&a||d>=a)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,a<d&&(d=a));if(t){e.splice(i--,1);var n=b();void 0!==n&&(f=n)}}return f}a=a||0;for(var i=e.lengt [...]
\ No newline at end of file
diff --git a/blog/index.html b/blog/index.html
index 40c76b4fc..4c9cabc39 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -14,13 +14,13 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.5bfad63a.js" as="script">
-<link rel="preload" href="/assets/js/main.d6cc924f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.06837abf.js" as="script">
+<link rel="preload" href="/assets/js/main.66359c18.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
-<script src="/assets/js/runtime~main.5bfad63a.js"></script>
-<script src="/assets/js/main.d6cc924f.js"></script>
+<script src="/assets/js/runtime~main.06837abf.js"></script>
+<script src="/assets/js/main.66359c18.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/cla/index.html b/community/cla/index.html
index 97e367962..64f7e9463 100644
--- a/community/cla/index.html
+++ b/community/cla/index.html
@@ -14,15 +14,15 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.5bfad63a.js" as="script">
-<link rel="preload" href="/assets/js/main.d6cc924f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.06837abf.js" as="script">
+<link rel="preload" href="/assets/js/main.66359c18.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
the Apache Software Foundation.</p><p>Other contributors are free to submit patches without having a CLA on file. You should only submit patches to the
project when you intend to license your contribution under the Apache 2.0 license, and have the legal right to do so.</p></article></div></div></main></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div><div class="foote [...]
-<script src="/assets/js/runtime~main.5bfad63a.js"></script>
-<script src="/assets/js/main.d6cc924f.js"></script>
+<script src="/assets/js/runtime~main.06837abf.js"></script>
+<script src="/assets/js/main.66359c18.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index a714a7513..7cbc21023 100644
--- a/community/index.html
+++ b/community/index.html
@@ -14,8 +14,8 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.5bfad63a.js" as="script">
-<link rel="preload" href="/assets/js/main.d6cc924f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.06837abf.js" as="script">
+<link rel="preload" href="/assets/js/main.66359c18.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -50,7 +50,7 @@ existing committers for a walk through the process. Basically, what we're
looking for is an interest in ongoing contributions to Druid.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="general-committer-guidelines">General committer guidelines<a href="#general-committer-guidelines" class="hash-link" aria-label="Direct link to General committer guidelines" title="Direct link to General committer guidelines"></a></h3><p>If you are an official Druid committer then congratulations! You are part of a fantastic group of people. Here are some guidelines to foll [...]
aspects of the Druid project. The responsibilities of the PMC include:</p><ul><li>Approving releases</li><li>Nominating new committers</li><li>Maintaining the project's shared resources, including the github account,
mailing lists, websites, social media channels, etc.</li><li>Maintaining guidelines for the project</li></ul></article></div><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#community" class="table-of-contents__link toc-highlight">Community</a></li><li><a href="#getting-help" class="table-of-contents__link toc-highlight">Getting help</a></li><li><a href="#contributing" class="table-of-conte [...]
-<script src="/assets/js/runtime~main.5bfad63a.js"></script>
-<script src="/assets/js/main.d6cc924f.js"></script>
+<script src="/assets/js/runtime~main.06837abf.js"></script>
+<script src="/assets/js/main.66359c18.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/community/join-slack/index.html b/community/join-slack/index.html
index f8a123ae8..45f11e331 100644
--- a/community/join-slack/index.html
+++ b/community/join-slack/index.html
@@ -14,13 +14,13 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.5bfad63a.js" as="script">
-<link rel="preload" href="/assets/js/main.d6cc924f.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.06837abf.js" as="script">
+<link rel="preload" href="/assets/js/main.66359c18.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
-<script src="/assets/js/runtime~main.5bfad63a.js"></script>
-<script src="/assets/js/main.d6cc924f.js"></script>
+<script src="/assets/js/runtime~main.06837abf.js"></script>
+<script src="/assets/js/main.66359c18.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference.html/index.html b/docs/29.0.0/api-reference.html/index.html
new file mode 100644
index 000000000..ccdde0aa4
--- /dev/null
+++ b/docs/29.0.0/api-reference.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/automatic-compaction-api.html/index.html b/docs/29.0.0/api-reference/automatic-compaction-api.html/index.html
new file mode 100644
index 000000000..97525c694
--- /dev/null
+++ b/docs/29.0.0/api-reference/automatic-compaction-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/automatic-compaction-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/automatic-compaction-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/automatic-compaction-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/automatic-compaction-api/index.html b/docs/29.0.0/api-reference/automatic-compaction-api/index.html
new file mode 100644
index 000000000..978914f78
--- /dev/null
+++ b/docs/29.0.0/api-reference/automatic-compaction-api/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/automatic-compaction-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Automatic compaction API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/data-management-api.html/index.html b/docs/29.0.0/api-reference/data-management-api.html/index.html
new file mode 100644
index 000000000..cc8c95c11
--- /dev/null
+++ b/docs/29.0.0/api-reference/data-management-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/data-management-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/data-management-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/data-management-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/data-management-api/index.html b/docs/29.0.0/api-reference/data-management-api/index.html
new file mode 100644
index 000000000..d162e171c
--- /dev/null
+++ b/docs/29.0.0/api-reference/data-management-api/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/data-management-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Data management API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This includes information on how to mark segments as used or unused and delete them from Druid.</p><p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port.
+Replace it with the information for your deployment.
+For example, use <code>http://localhost:8888</code> for quickstart deployments.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span [...]
+Even if these API requests update segments to used, you still need to configure a <a href="/docs/29.0.0/operations/rule-configuration#load-rules">load rule</a> to load them onto Historical processes.</p><p>When you use these APIs concurrently with an indexing task or a kill task, the behavior is undefined.
+Druid terminates some segments and marks others as used.
+Furthermore, it is possible that all segments could be unused, yet an indexing task might still be able to read data from these segments and complete successfully.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-ids">Segment IDs<a href="#segment-ids" class="hash-link" aria-label="Direct link to Segment IDs" title="Direct link to Segment IDs"></a></h3><p>You must provide segment IDs when using many of the endpoints described in this topic.
+For information on segment IDs, see <a href="/docs/29.0.0/design/segments#segment-identification">Segment identification</a>.
+For information on finding segment IDs in the web console, see <a href="/docs/29.0.0/operations/web-console#segments">Segments</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mark-a-single-segment-unused">Mark a single segment unused<a href="#mark-a-single-segment-unused" class="hash-link" aria-label="Direct link to Mark a single segment unused" title="Direct link to Mark a single segment unused"></a></h3><p>Marks the state of a segment as unused, using the segment ID.
+This is a "soft delete" of the segment from Historicals.
+To undo this action, <a href="#mark-a-single-segment-as-used">mark the segment used</a>.</p><p>Note that this endpoint returns an HTTP <code>200 OK</code> response code even if the segment ID or datasource doesn't exist.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="deleteAPI">DELETE</code> <code>/druid/coordinator/v1/datasources/:datasource/segments/:se [...]
+Pass the array of segment IDs or interval as a JSON object in the request body.</p><p>For the interval, specify the start and end times as ISO 8601 strings to identify segments inclusive of the start time and exclusive of the end time.
+Druid only updates the segments completely contained within the specified interval; partially overlapping segments are not affected.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-2">URL<a href="#url-2" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/coordinator/v1/datasources/:datasource/markUnused</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="request-body">Request body<a href="#r [...]
+Pass the array of segment IDs or interval as a JSON object in the request body.</p><p>For the interval, specify the start and end times as ISO 8601 strings to identify segments inclusive of the start time and exclusive of the end time.
+Druid only updates the segments completely contained within the specified interval; partially overlapping segments are not affected.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/coordinator/v1/datasources/:datasource/markUsed</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="request-body-1">Request body<a href="#r [...]
+This action performs a "soft delete" of the segments from Historicals.</p><p>Note that this endpoint returns an HTTP <code>200 OK</code> response code even if the datasource doesn't exist.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="deleteAPI">DELETE</code> <code>/druid/coordinator/v1/datasources/:datasource</code><h4 class="anchor anchor [...]
+The endpoint returns the number of changed segments.</p><p>Note that this endpoint returns an HTTP <code>200 OK</code> response code even if the datasource doesn't exist.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-5">URL<a href="#url-5" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/coordinator/v1/datasources/:datasource</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="heade [...]
+<code>wikipedia_hour</code> contains one unused segment eligible to be marked as used.</p><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">cURL</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">HTTP</li></ul><div class="margin-top--md"><div role="tabpanel" class="tabItem_Ymn6"><div class="language-sh [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/dynamic-configuration-api.html/index.html b/docs/29.0.0/api-reference/dynamic-configuration-api.html/index.html
new file mode 100644
index 000000000..710c5cb13
--- /dev/null
+++ b/docs/29.0.0/api-reference/dynamic-configuration-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/dynamic-configuration-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/dynamic-configuration-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/dynamic-configuration-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/dynamic-configuration-api/index.html b/docs/29.0.0/api-reference/dynamic-configuration-api/index.html
new file mode 100644
index 000000000..fc93a9085
--- /dev/null
+++ b/docs/29.0.0/api-reference/dynamic-configuration-api/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/dynamic-configuration-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Dynamic configuration API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/2 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Replace it with the information for your deployment.
+For example, use <code>http://localhost:8888</code> for quickstart deployments.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="coordinator-dynamic-configuration">Coordinator dynamic configuration<a href="#coordinator-dynamic-configuration" class="hash-link" aria-label="Direct link to Coordinator dynamic configuration" title="Direct link to Coordinator dynamic configuration"></a></h2><p>The Coordinator has dynamic configurations to tune certain behavior on the fly, without requiri [...]
+For information on the supported properties, see <a href="/docs/29.0.0/configuration/#dynamic-configuration">Coordinator dynamic configuration</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-dynamic-configuration">Get dynamic configuration<a href="#get-dynamic-configuration" class="hash-link" aria-label="Direct link to Get dynamic configuration" title="Direct link to Get dynamic configuration"></a></h3><p>Retrieves the current Coordinator dynamic configuration. Returns a [...]
+For information on the supported properties, see <a href="/docs/29.0.0/configuration/#dynamic-configuration">Dynamic configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-1">URL<a href="#url-1" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/coordinator/v1/config</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters">Header parameters<a href="#header-parameter [...]
+For information on the supported properties, see <a href="/docs/29.0.0/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-dynamic-configuration-1">Get dynamic configuration<a href="#get-dynamic-configuration-1" class="hash-link" aria-label="Direct link to Get dynamic configuration" title="Direct link to Get dynamic configuration"></a></h3><p>Retrieves the current Overlord dynamic configuration.
+Returns a JSON object with the dynamic configuration properties.
+Returns an empty response body if there is no current Overlord dynamic configuration.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="getAPI">GET</code> <code>/druid/indexer/v1/worker</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-3">Responses<a href="#responses-3" class="hash-link" aria-label="Direct link to Responses" title="Direct lin [...]
+For information on the supported properties, see <a href="/docs/29.0.0/configuration/#overlord-dynamic-configuration">Overlord dynamic configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code><code>/druid/indexer/v1/worker</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="header-parameters-1">Header parameters<a href="#h [...]
+Returns an empty response body if there are no Overlord scaling events.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-6">URL<a href="#url-6" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="getAPI">GET</code><code>/druid/indexer/v1/scaling</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-7">Responses<a href="#responses-7" class="hash-link" aria-label="Direct link to Responses" title="Direct link to Responses [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/index.html b/docs/29.0.0/api-reference/index.html
new file mode 100644
index 000000000..550e0660b
--- /dev/null
+++ b/docs/29.0.0/api-reference/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/api-reference" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">API reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/api-re [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/json-querying-api.html/index.html b/docs/29.0.0/api-reference/json-querying-api.html/index.html
new file mode 100644
index 000000000..2c45dec86
--- /dev/null
+++ b/docs/29.0.0/api-reference/json-querying-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/json-querying-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/json-querying-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/json-querying-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/json-querying-api/index.html b/docs/29.0.0/api-reference/json-querying-api/index.html
new file mode 100644
index 000000000..40a7187b8
--- /dev/null
+++ b/docs/29.0.0/api-reference/json-querying-api/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/json-querying-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">JSON querying API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ap [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/legacy-metadata-api.html/index.html b/docs/29.0.0/api-reference/legacy-metadata-api.html/index.html
new file mode 100644
index 000000000..b5ecf94df
--- /dev/null
+++ b/docs/29.0.0/api-reference/legacy-metadata-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/legacy-metadata-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/legacy-metadata-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/legacy-metadata-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/legacy-metadata-api/index.html b/docs/29.0.0/api-reference/legacy-metadata-api/index.html
new file mode 100644
index 000000000..80656ac12
--- /dev/null
+++ b/docs/29.0.0/api-reference/legacy-metadata-api/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/legacy-metadata-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Legacy metadata API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The result includes segment replication counts. It also factors in the number of available nodes that are of a service type that can load the segment when computing the number of segments remaining to load.
+A segment is considered fully loaded when:</p><ul><li>Druid has replicated it the number of times configured in the corresponding load rule.</li><li>Or the number of replicas for the segment in each tier where it is configured to be replicated equals the available nodes of a service type that are currently allowed to load the segment in the tier.</li></ul><p><code>GET /druid/coordinator/v1/loadqueue</code></p><p>Returns the ids of segments to load and drop for each Historical process.</p [...]
+Also note that these APIs only guarantees that the segments are available at the time of the call.
+Segments can still become missing because of historical process failures or any other reasons afterward.</p><p><code>GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?forceMetadataRefresh={boolean}&interval={myInterval}</code></p><p>Returns the percentage of segments actually loaded in the cluster versus segments that should be loaded in the cluster for the given
+datasource over the given interval (or last 2 weeks if interval is not given). <code>forceMetadataRefresh</code> is required to be set. </p><ul><li>Setting <code>forceMetadataRefresh</code> to true will force the coordinator to poll latest segment metadata from the metadata store
+(Note: <code>forceMetadataRefresh=true</code> refreshes Coordinator's metadata cache of all datasources. This can be a heavy operation in terms
+of the load on the metadata store but can be necessary to make sure that we verify all the latest segments' load status)</li><li>Setting <code>forceMetadataRefresh</code> to false will use the metadata cached on the coordinator from the last force/periodic refresh.
+If no used segments are found for the given inputs, this API returns <code>204 No Content</code></li></ul><p><code>GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?simple&forceMetadataRefresh={boolean}&interval={myInterval}</code></p><p>Returns the number of segments left to load until segments that should be loaded in the cluster are available for the given datasource
+over the given interval (or last 2 weeks if interval is not given). This does not include segment replication counts. <code>forceMetadataRefresh</code> is required to be set. </p><ul><li>Setting <code>forceMetadataRefresh</code> to true will force the coordinator to poll latest segment metadata from the metadata store
+(Note: <code>forceMetadataRefresh=true</code> refreshes Coordinator's metadata cache of all datasources. This can be a heavy operation in terms
+of the load on the metadata store but can be necessary to make sure that we verify all the latest segments' load status)</li><li>Setting <code>forceMetadataRefresh</code> to false will use the metadata cached on the coordinator from the last force/periodic refresh.
+If no used segments are found for the given inputs, this API returns <code>204 No Content</code></li></ul><p><code>GET /druid/coordinator/v1/datasources/{dataSourceName}/loadstatus?full&forceMetadataRefresh={boolean}&interval={myInterval}</code></p><p>Returns the number of segments left to load in each tier until segments that should be loaded in the cluster are all available for the given datasource over the given interval (or last 2 weeks if interval is not given). This includ [...]
+(Note: <code>forceMetadataRefresh=true</code> refreshes Coordinator's metadata cache of all datasources. This can be a heavy operation in terms
+of the load on the metadata store but can be necessary to make sure that we verify all the latest segments' load status)</li><li>Setting <code>forceMetadataRefresh</code> to false will use the metadata cached on the coordinator from the last force/periodic refresh. </li></ul><p>You can pass the optional query parameter <code>computeUsingClusterView</code> to factor in the available cluster services when calculating
+the segments left to load. See <a href="#segment-loading">Coordinator Segment Loading</a> for details.
+If no used segments are found for the given inputs, this API returns <code>204 No Content</code></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-store-information">Metadata store information<a href="#metadata-store-information" class="hash-link" aria-label="Direct link to Metadata store information" title="Direct link to Metadata store information"></a></h2><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_ [...]
+<a href="/docs/29.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> table.</p></div></div><p><code>GET /druid/coordinator/v1/metadata/segments</code></p><p>Returns a list of all segments for each datasource enabled in the cluster.</p><p><code>GET /druid/coordinator/v1/metadata/segments?datasources={dataSourceName1}&datasources={dataSourceName2}</code></p><p>Returns a list of all segments for one or more specific datasources enabled in the cluster.</p><p>< [...]
+segment is unused, or is unknown, a 404 response is returned.</p><p><code>GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments/{segmentId}?includeUnused=true</code></p><p>Returns full segment metadata for a specific segment as stored in the metadata store. If it is unknown, a 404 response
+is returned.</p><p><code>GET /druid/coordinator/v1/metadata/datasources/{dataSourceName}/segments</code></p><p>Returns a list of all segments, overlapping with any of given intervals, for a datasource as stored in the metadata store. Request body is array of string IS0 8601 intervals like <code>[interval1, interval2,...]</code>—<!-- -->for example, <code>["2012-01-01T00:00:00.000/2012-01-03T00:00:00.000", "2012-01-05T00:00:00.000/2012-01-07T00:00:00.000"]</code>.</p> [...]
+processes that run with different types will appear multiple times with different
+ports.</p><p><code>GET /druid/coordinator/v1/servers?simple</code></p><p>Returns a list of server data objects in which each object has the following keys:</p><ul><li><code>host</code>: host URL include (<code>{hostname}:{port}</code>)</li><li><code>type</code>: process type (<code>indexer-executor</code>, <code>historical</code>)</li><li><code>currSize</code>: storage size currently used</li><li><code>maxSize</code>: maximum storage size</li><li><code>priority</code></li><li><code>tier< [...]
+as in <code>2016-06-27_2016-06-28</code>.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionConte [...]
+<a href="/docs/29.0.0/querying/sql-metadata-tables#tables-table"><code>INFORMATION_SCHEMA.TABLES</code></a>,
+<a href="/docs/29.0.0/querying/sql-metadata-tables#columns-table"><code>INFORMATION_SCHEMA.COLUMNS</code></a>, and
+<a href="/docs/29.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code></a> tables.</p></div></div><p><code>GET /druid/v2/datasources</code></p><p>Returns a list of queryable datasources.</p><p><code>GET /druid/v2/datasources/{dataSourceName}</code></p><p>Returns the dimensions and metrics of the datasource. Optionally, you can provide request parameter "full" to get list of served intervals with dimensions and metrics being served for those intervals. You [...]
+which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/29.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
+if you're using SQL.</p></div></div><p>Returns the dimensions of the datasource.</p><p><code>GET /druid/v2/datasources/{dataSourceName}/metrics</code></p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 [...]
+which provides more comprehensive information and supports all dataSource types including streaming dataSources. It's also encouraged to use <a href="/docs/29.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>
+if you're using SQL.</p></div></div><p>Returns the metrics of the datasource.</p><p><code>GET /druid/v2/datasources/{dataSourceName}/candidates?intervals={comma-separated-intervals}&numCandidates={numCandidates}</code></p><p>Returns segment information lists including server locations for the given datasource and intervals. If "numCandidates" is not specified, it will return all servers for each interval.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/lookups-api.html/index.html b/docs/29.0.0/api-reference/lookups-api.html/index.html
new file mode 100644
index 000000000..fd3b3ac48
--- /dev/null
+++ b/docs/29.0.0/api-reference/lookups-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/lookups-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/lookups-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/lookups-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/lookups-api/index.html b/docs/29.0.0/api-reference/lookups-api/index.html
new file mode 100644
index 000000000..434290841
--- /dev/null
+++ b/docs/29.0.0/api-reference/lookups-api/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/lookups-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Lookups API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/api-refe [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+To discover a list of tiers currently active in the cluster in addition to ones known in the dynamic configuration, the parameter <code>discover=true</code> can be added as per <code>/druid/coordinator/v1/lookups/config?discover=true</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="list-lookup-names">List lookup names<a href="#list-lookup-names" class="hash-link" aria-label="Direct link to List lookup names" title="Direct link to List lookup names"></a></h3><p>A <code>GET</ [...]
+There is an internal API these processes use to list/load/drop their lookups starting at <code>/druid/listen/v1/lookups</code>.
+These follow the same convention for return values as the cluster wide dynamic configuration. Following endpoints
+can be used for debugging purposes but not otherwise.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="get-lookups">Get lookups<a href="#get-lookups" class="hash-link" aria-label="Direct link to Get lookups" title="Direct link to Get lookups"></a></h3><p>A <code>GET</code> to the process at <code>/druid/listen/v1/lookups</code> will return a json map of all the lookups currently active on the process.
+The return value will be a json map of the lookups to their extractor factories.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span c [...]
+The return value will be the json representation of the factory.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plai [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/retention-rules-api.html/index.html b/docs/29.0.0/api-reference/retention-rules-api.html/index.html
new file mode 100644
index 000000000..4f66547b0
--- /dev/null
+++ b/docs/29.0.0/api-reference/retention-rules-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/retention-rules-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/retention-rules-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/retention-rules-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/retention-rules-api/index.html b/docs/29.0.0/api-reference/retention-rules-api/index.html
new file mode 100644
index 000000000..387e3d90a
--- /dev/null
+++ b/docs/29.0.0/api-reference/retention-rules-api/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/retention-rules-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Retention rules API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid reads rules in the order in which they appear; for more information, see <a href="/docs/29.0.0/operations/rule-configuration">rule structure</a>.</p><p>Note that this endpoint returns an HTTP <code>200 OK</code> even if the datasource does not exist.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="url">URL<a href="#url" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h3><code class="postAPI">POST</code> <code>/druid/coordinator/v1/rules/:da [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/service-status-api.html/index.html b/docs/29.0.0/api-reference/service-status-api.html/index.html
new file mode 100644
index 000000000..55cd74c82
--- /dev/null
+++ b/docs/29.0.0/api-reference/service-status-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/service-status-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/service-status-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/service-status-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/service-status-api/index.html b/docs/29.0.0/api-reference/service-status-api/index.html
new file mode 100644
index 000000000..e506bc4fe
--- /dev/null
+++ b/docs/29.0.0/api-reference/service-status-api/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/service-status-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Service status API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/a [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+For nodes that use Zookeeper segment discovery, a response of <code>{"selfDiscovered": true}</code> indicates that the node's Zookeeper client has started receiving data from the Zookeeper cluster, enabling timely discovery of segments and other nodes.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-3">URL<a href="#url-3" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="getAPI">GET</code> <code>/status/selfDiscov [...]
+Use this endpoint for monitoring checks that are unable to examine the response body. For example, AWS load balancer health checks.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-4">URL<a href="#url-4" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="getAPI">GET</code> <code>/status/selfDiscovered</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-4">Responses<a href="#responses-4" class="hash-link" aria-label= [...]
+<a href="/docs/29.0.0/api-reference/tasks-api">Tasks API</a> endpoint instead.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-11">URL<a href="#url-11" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="getAPI">GET</code> <code>/druid/worker/v1/task/:taskId/log</code><h3 class="anchor anchorWithStickyNavbar_LWe7" id="shut-down-running-task">Shut down running task<a href="#shut-down-running-task" class="hash-link" aria-label="Dire [...]
+<a href="/docs/29.0.0/api-reference/tasks-api">Tasks API</a> endpoint instead.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-12">URL<a href="#url-12" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/worker/v1/task/:taskId/shutdown</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-11">Responses<a href="#responses-11" class="hash-link" aria-label="Direct link to Responses" titl [...]
+keyed by the combined <code>druid.host</code> and <code>druid.port</code>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-13">URL<a href="#url-13" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/worker/v1/disable</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-12">Responses<a href="#responses-12" class="hash-link" aria-label="Direct link to Responses" title="Direct link to [...]
+keyed by the combined <code>druid.host</code> and <code>druid.port</code>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-14">URL<a href="#url-14" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/worker/v1/enable</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-13">Responses<a href="#responses-13" class="hash-link" aria-label="Direct link to Responses" title="Direct link to R [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-api.html/index.html b/docs/29.0.0/api-reference/sql-api.html/index.html
new file mode 100644
index 000000000..e2c296784
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/sql-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/sql-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/sql-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-api/index.html b/docs/29.0.0/api-reference/sql-api/index.html
new file mode 100644
index 000000000..98de61ce5
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-api/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/sql-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Druid SQL API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/api-re [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes the SQL language.</p></div></div><p>In this topic, <code>http://ROUTER_IP:ROUTER_PORT</code> is a placeholder for your Router service address and port. Replace it with the information for your deployment. For example, use <code>http://localhost:8888</code> for quickstart deployments.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="query-from-historicals">Query from Historicals<a href="#query-from-historicals" class="hash-link" aria-label="Direct link to Quer [...]
+In all cases, <code>header</code> is true.
+The examples includes the first row of results, where the value of <code>user</code> is <code>BlueMoon2662</code>.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">| Format | typesHeader | sqlTypesH [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-ingestion-api.html/index.html b/docs/29.0.0/api-reference/sql-ingestion-api.html/index.html
new file mode 100644
index 000000000..aeb6da3c2
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-ingestion-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/sql-ingestion-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/sql-ingestion-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/sql-ingestion-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-ingestion-api/index.html b/docs/29.0.0/api-reference/sql-ingestion-api/index.html
new file mode 100644
index 000000000..d7894195e
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-ingestion-api/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/sql-ingestion-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">SQL-based ingestion API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+extension, new in Druid 24.0. Refer to the <a href="/docs/29.0.0/ingestion/#batch">ingestion methods</a> table to determine which
+ingestion method is right for you.</p></div></div><p>The <strong>Query</strong> view in the web console provides a friendly experience for the multi-stage query task engine (MSQ task
+engine) and multi-stage query architecture. We recommend using the web console if you do not need a programmatic
+interface.</p><p>When using the API for the MSQ task engine, the action you want to take determines the endpoint you use:</p><ul><li><code>/druid/v2/sql/task</code> endpoint: Submit a query for ingestion.</li><li><code>/druid/indexer/v1/task</code> endpoint: Interact with a query, including getting its status, getting its details, or canceling it. This page describes a few of the Overlord Task APIs that you can use with the MSQ task engine. For information about Druid APIs, see the <a hr [...]
+<code>query</code>, <code>context</code>, and <code>parameters</code> fields, but ignoring the <code>resultFormat</code>, <code>header</code>, <code>typesHeader</code>, and
+<code>sqlTypesHeader</code> fields.</p><p>This endpoint accepts <a href="/docs/29.0.0/multi-stage-query/reference#insert">INSERT</a> and <a href="/docs/29.0.0/multi-stage-query/reference#replace">REPLACE</a> statements.</p><p>As an experimental feature, this endpoint also accepts SELECT queries. SELECT query results are collected from workers
+by the controller, and written into the <a href="#get-the-report-for-a-query-task">task report</a> as an array of arrays. The
+behavior and result format of plain SELECT queries (without INSERT or REPLACE) is subject to change.</p><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" class="tabs__item tabItem_LNqP tabs__item--active">HTTP</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">curl</li><li role="tab" tabindex="-1" aria-selected="false" class="tabs__item tabItem_LNqP">P [...]
+their own reports; their information is incorporated into the controller report.</li><li>The task report API may report <code>404 Not Found</code> temporarily while the task is in the process of starting up.</li><li>As an experimental feature, the MSQ task engine supports running SELECT queries. SELECT query results are written into
+the <code>multiStageQuery.payload.results.results</code> task report key as an array of arrays. The behavior and result format of plain
+SELECT queries (without INSERT or REPLACE) is subject to change.</li><li><code>multiStageQuery.payload.results.resultsTruncated</code> denote whether the results of the report have been truncated to prevent
+the reports from blowing up</li></ul><p>For an explanation of the fields in a report, see <a href="#report-response-fields">Report response fields</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="request-2">Request<a href="#request-2" class="hash-link" aria-label="Direct link to Request" title="Direct link to Request"></a></h4><div class="tabs-container tabList__CuJ"><ul role="tablist" aria-orientation="horizontal" class="tabs"><li role="tab" tabindex="0" aria-selected="true" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-jdbc.html/index.html b/docs/29.0.0/api-reference/sql-jdbc.html/index.html
new file mode 100644
index 000000000..d2b236aec
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-jdbc.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/sql-jdbc">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/sql-jdbc" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/sql-jdbc' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/sql-jdbc/index.html b/docs/29.0.0/api-reference/sql-jdbc/index.html
new file mode 100644
index 000000000..134ac70bd
--- /dev/null
+++ b/docs/29.0.0/api-reference/sql-jdbc/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/sql-jdbc" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">SQL JDBC driver API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes the SQL language.</p></div></div><p>You can make <a href="/docs/29.0.0/querying/sql">Druid SQL</a> queries using the <a href="https://calcite.apache.org/avatica/downloads/" target="_blank" rel="noopener noreferrer">Avatica JDBC driver</a>.
+We recommend using Avatica JDBC driver version 1.23.0 or later. Note that starting with Avatica 1.21.0, you may need to set the <a href="https://calcite.apache.org/avatica/docs/client_reference.html#transparent_reconnection" target="_blank" rel="noopener noreferrer"><code>transparent_reconnection</code></a> property to <code>true</code> if you notice intermittent query failures.</p><p>Once you've downloaded the Avatica client jar, add it to your classpath.</p><p>Example connection s [...]
+For more information, see <a href="#connection-stickiness">Connection stickiness</a>.</p><p>Set <code>transparent_reconnection</code> to <code>true</code> so your connection is not interrupted if the pool of Brokers changes membership,
+or if a Broker is restarted.</p><p>Set <code>serialization</code> to <code>protobuf</code> if using the protobuf endpoint.</p><p>Note that as of the time of this writing, Avatica 1.23.0, the latest version, does not support passing
+<a href="/docs/29.0.0/querying/sql-query-context">connection context parameters</a> from the JDBC connection string to Druid. These context parameters
+must be passed using a <code>Properties</code> object instead. Refer to the Java code below for an example.</p><p>Example Java code:</p><div class="language-java codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-java codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">// [...]
+improvements for larger result sets. To use it apply the following connection URL instead, everything else remains the same</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">String url = "jdbc:a [...]
+<a href="/docs/29.0.0/querying/sql-metadata-tables">INFORMATION_SCHEMA tables</a>. For an example of this, see <a href="#get-the-metadata-for-a-datasource">Get the metadata for a datasource</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="connection-stickiness">Connection stickiness<a href="#connection-stickiness" class="hash-link" aria-label="Direct link to Connection stickiness" title="Direct link to Connection stickiness"></a></h2><p>Druid's JDBC server does not share [...]
+multiple Druid Brokers, you should either connect to a specific Broker or use a load balancer with sticky sessions
+enabled. The Druid Router process provides connection stickiness when balancing JDBC requests, and can be used to achieve
+the necessary stickiness even with a normal non-sticky load balancer. Please see the
+<a href="/docs/29.0.0/design/router">Router</a> documentation for more details.</p><p>Note that the non-JDBC <a href="/docs/29.0.0/api-reference/sql-api#submit-a-query">JSON over HTTP</a> API is stateless and does not require stickiness.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dynamic-parameters">Dynamic parameters<a href="#dynamic-parameters" class="hash-link" aria-label="Direct link to Dynamic parameters" title="Direct link to Dynamic parameters"></a></h2><p>You can use [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/supervisor-api.html/index.html b/docs/29.0.0/api-reference/supervisor-api.html/index.html
new file mode 100644
index 000000000..edbb677d3
--- /dev/null
+++ b/docs/29.0.0/api-reference/supervisor-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/supervisor-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/supervisor-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/supervisor-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/supervisor-api/index.html b/docs/29.0.0/api-reference/supervisor-api/index.html
new file mode 100644
index 000000000..1a6c9ce4e
--- /dev/null
+++ b/docs/29.0.0/api-reference/supervisor-api/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/supervisor-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Supervisor API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/api-r [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This way, you can apply configuration changes without a pause in ingestion.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-9">URL<a href="#url-9" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/indexer/v1/supervisor</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-9">Responses<a href="#responses-9" class="hash-link" aria-label="Direct link to Responses" title="Direct link to [...]
+Indexing tasks remain suspended until you <a href="#resume-a-supervisor">resume the supervisor</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-10">URL<a href="#url-10" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/indexer/v1/supervisor/:supervisorId/suspend</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-10">Responses<a href="#responses-10" class="hash-link" aria-labe [...]
+After clearing all stored offsets in Kafka or sequence numbers in Kinesis, the supervisor kills and recreates active tasks,
+so that tasks begin reading from valid positions.</p><p>Use this endpoint to recover from a stopped state due to missing offsets in Kafka or sequence numbers in Kinesis. Use this endpoint with caution as it may result in skipped messages and lead to data loss or duplicate data.</p><p>The indexing service keeps track of the latest persisted offsets in Kafka or sequence numbers in Kinesis to provide exactly-once ingestion guarantees across tasks. Subsequent tasks must start reading from wh [...]
+If there are no stored offsets, the specified offsets are set in the metadata store.</p><p>After resetting stored offsets, the supervisor kills and recreates any active tasks pertaining to the specified partitions,
+so that tasks begin reading specified offsets. For partitions that are not specified in this operation, the supervisor resumes from the last stored offset.</p><p>Use this endpoint with caution. It can cause skipped messages, leading to data loss or duplicate data.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-15">URL<a href="#url-15" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="postAPI">POST</code> <code>/druid/indexer/v1 [...]
+when the supervisor's tasks restart, they resume reading from <code>{"0": 100, "1": 10, "2": 650, "3": 40}</code>.</p></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="sample-response-15">Sample response<a href="#sample-response-15" class="hash-link" aria-label="Direct link to Sample response" title="Direct link to Sample response"></a></h4><details class="details_lb9f alert alert--info details_b_Ee" data-collapsed="true">< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/tasks-api.html/index.html b/docs/29.0.0/api-reference/tasks-api.html/index.html
new file mode 100644
index 000000000..2dcf901c9
--- /dev/null
+++ b/docs/29.0.0/api-reference/tasks-api.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/api-reference/tasks-api">
+ <link rel="canonical" href="/docs/29.0.0/api-reference/tasks-api" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/api-reference/tasks-api' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/api-reference/tasks-api/index.html b/docs/29.0.0/api-reference/tasks-api/index.html
new file mode 100644
index 000000000..4ccfa5a1d
--- /dev/null
+++ b/docs/29.0.0/api-reference/tasks-api/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-api-reference/tasks-api" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Tasks API | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/api-refere [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<code>numDeleted</code> for the number of rows deleted from the pending segments table. This API is used by the
+<code>druid.coordinator.kill.pendingSegments.on</code> <a href="/docs/29.0.0/configuration/#coordinator-operation">Coordinator setting</a>
+which automates this operation to perform periodically.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="url-15">URL<a href="#url-15" class="hash-link" aria-label="Direct link to URL" title="Direct link to URL"></a></h4><code class="deleteAPI">DELETE</code> <code>/druid/indexer/v1/pendingSegments/:datasource</code><h4 class="anchor anchorWithStickyNavbar_LWe7" id="responses-14">Responses<a href="#responses-14" class="hash-link" aria-label="Direct link to Responses" title="Direct li [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-elasticsearch.html/index.html b/docs/29.0.0/comparisons/druid-vs-elasticsearch.html/index.html
new file mode 100644
index 000000000..8f6f66214
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-elasticsearch.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-elasticsearch">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-elasticsearch" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-elasticsearch' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-elasticsearch/index.html b/docs/29.0.0/comparisons/druid-vs-elasticsearch/index.html
new file mode 100644
index 000000000..4cd960597
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-elasticsearch/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-elasticsearch" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs Elasticsearch | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+and provides access to raw event level data. Elasticsearch is increasingly adding more support for analytics and aggregations.
+<a href="https://groups.google.com/forum/#!msg/druid-development/nlpwTHNclj8/sOuWlKOzPpYJ" target="_blank" rel="noopener noreferrer">Some members of the community</a> have pointed out
+the resource requirements for data ingestion and aggregation in Elasticsearch is much higher than those of Druid.</p><p>Elasticsearch also does not support data summarization/roll-up at ingestion time, which can compact the data that needs to be
+stored up to 100x with real-world data sets. This leads to Elasticsearch having greater storage requirements.</p><p>Druid focuses on OLAP work flows. Druid is optimized for high performance (fast aggregation and ingestion) at low cost,
+and supports a wide range of analytic operations. Druid has some basic search support for structured event data, but does not support
+full text search. Druid also does not support completely unstructured data. Measures must be defined in a Druid schema such that
+summarization/roll-up can be done.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div>< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-key-value.html/index.html b/docs/29.0.0/comparisons/druid-vs-key-value.html/index.html
new file mode 100644
index 000000000..4eab69915
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-key-value.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-key-value">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-key-value" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-key-value' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-key-value/index.html b/docs/29.0.0/comparisons/druid-vs-key-value/index.html
new file mode 100644
index 000000000..9bc4d99f9
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-key-value/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-key-value" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs. Key/Value Stores (HBase/Cassandra/OpenTSDB) | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" conte [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+is supported in key/value stores in 2 ways:</p><ol><li>Pre-compute all permutations of possible user queries</li><li>Range scans on event data</li></ol><p>When pre-computing results, the key is the exact parameters of the query, and the value is the result of the query.
+The queries return extremely quickly, but at the cost of flexibility, as ad-hoc exploratory queries are not possible with
+pre-computing every possible query permutation. Pre-computing all permutations of all ad-hoc queries leads to result sets
+that grow exponentially with the number of columns of a data set, and pre-computing queries for complex real-world data sets
+can require hours of pre-processing time.</p><p>The other approach to using key/value stores for aggregations to use the dimensions of an event as the key and the event measures as the value.
+Aggregations are done by issuing range scans on this data. Timeseries specific databases such as OpenTSDB use this approach.
+One of the limitations here is that the key/value storage model does not have indexes for any kind of filtering other than prefix ranges,
+which can be used to filter a query down to a metric and time range, but cannot resolve complex predicates to narrow the exact data to scan.
+When the number of rows to scan gets large, this limitation can greatly reduce performance. It is also harder to achieve good
+locality with key/value stores because most don’t support pushing down aggregates to the storage layer.</p><p>For arbitrary exploration of data (flexible data filtering), Druid's custom column format enables ad-hoc queries without pre-computation. The format
+also enables fast scans on columns, which is important for good aggregation performance.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedI [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-kudu.html/index.html b/docs/29.0.0/comparisons/druid-vs-kudu.html/index.html
new file mode 100644
index 000000000..29d54601e
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-kudu.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-kudu">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-kudu" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-kudu' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-kudu/index.html b/docs/29.0.0/comparisons/druid-vs-kudu/index.html
new file mode 100644
index 000000000..87a008412
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-kudu/index.html
@@ -0,0 +1,37 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-kudu" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs Kudu | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+the process for updating old values should be higher latency in Druid. However, the requirements in Kudu for maintaining extra head space to store
+updates as well as organizing data by id instead of time has the potential to introduce some extra latency and accessing
+of data that is not needed to answer a query at query time.</p><p>Druid summarizes/rollups up data at ingestion time, which in practice reduces the raw data that needs to be
+stored significantly (up to 40 times on average), and increases performance of scanning raw data significantly.
+Druid segments also contain bitmap indexes for fast filtering, which Kudu does not currently support.
+Druid's segment architecture is heavily geared towards fast aggregates and filters, and for OLAP workflows. Appends are very
+fast in Druid, whereas updates of older data are higher latency. This is by design as the data Druid is good for is typically event data,
+and does not need to be updated too frequently. Kudu supports arbitrary primary keys with uniqueness constraints, and
+efficient lookup by ranges of those keys. Kudu chooses not to include the execution engine, but supports sufficient
+operations so as to allow node-local processing from the execution engines. This means that Kudu can support multiple frameworks on the same data (e.g., MR, Spark, and SQL).
+Druid includes its own query layer that allows it to push down aggregations and computations directly to data processes for faster query processing.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_H [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-redshift.html/index.html b/docs/29.0.0/comparisons/druid-vs-redshift.html/index.html
new file mode 100644
index 000000000..7f457f725
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-redshift.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-redshift">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-redshift" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-redshift' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-redshift/index.html b/docs/29.0.0/comparisons/druid-vs-redshift/index.html
new file mode 100644
index 000000000..cdba12c6a
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-redshift/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-redshift" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs Redshift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-spark.html/index.html b/docs/29.0.0/comparisons/druid-vs-spark.html/index.html
new file mode 100644
index 000000000..6b796e8d6
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-spark.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-spark">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-spark" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-spark' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-spark/index.html b/docs/29.0.0/comparisons/druid-vs-spark/index.html
new file mode 100644
index 000000000..c644c1779
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-spark/index.html
@@ -0,0 +1,34 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-spark" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs Spark | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+RDDs enable data reuse by persisting intermediate results
+in memory and enable Spark to provide fast computations for iterative algorithms.
+This is especially beneficial for certain work flows such as machine
+learning, where the same operation may be applied over and over
+again until some result is converged upon. The generality of Spark makes it very suitable as an engine to process (clean or transform) data.
+Although Spark provides the ability to query data through Spark SQL, much like Hadoop, the query latencies are not specifically targeted to be interactive (sub-second).</p><p>Druid's focus is on extremely low latency queries, and is ideal for powering applications used by thousands of users, and where each query must
+return fast enough such that users can interactively explore through data. Druid fully indexes all data, and can act as a middle layer between Spark and your application.
+One typical setup seen in production is to process data in Spark, and load the processed data into Druid for faster access.</p><p>For more information about using Druid and Spark together, including benchmarks of the two systems, please see:</p><p><a href="https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butani" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/pulse/combining-druid-spark-interactive-flexible-analytics-scale-butan [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html b/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
new file mode 100644
index 000000000..6aaa6c222
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop">
+ <link rel="canonical" href="/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop/index.html b/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
new file mode 100644
index 000000000..04d03efbe
--- /dev/null
+++ b/docs/29.0.0/comparisons/druid-vs-sql-on-hadoop/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-comparisons/druid-vs-sql-on-hadoop" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Druid vs SQL-on-Hadoop | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+execution engine for various data formats and data stores, and
+many can be made to push down computations down to Druid, while providing a SQL interface to Druid.</p><p>For a direct comparison between the technologies and when to only use one or the other, things basically comes down to your
+product requirements and what the systems were designed to do.</p><p>Druid was designed to</p><ol><li>be an always on service</li><li>ingest data in real-time</li><li>handle slice-n-dice style ad-hoc queries</li></ol><p>SQL-on-Hadoop engines generally sidestep Map/Reduce, instead querying data directly from HDFS or, in some cases, other storage systems.
+Some of these engines (including Impala and Presto) can be co-located with HDFS data nodes and coordinate with them to achieve data locality for queries.
+What does this mean? We can talk about it in terms of three general areas</p><ol><li>Queries</li><li>Data Ingestion</li><li>Query Flexibility</li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="queries">Queries<a href="#queries" class="hash-link" aria-label="Direct link to Queries" title="Direct link to Queries"></a></h3><p>Druid segments stores data in a custom column format. Segments are scanned directly as part of queries and each Druid server
+calculates a set of results that are eventually merged at the Broker level. This means the data that is transferred between servers
+are queries and results, and all computation is done internally as part of the Druid servers.</p><p>Most SQL-on-Hadoop engines are responsible for query planning and execution for underlying storage layers and storage formats.
+They are processes that stay on even if there is no query running (eliminating the JVM startup costs from Hadoop MapReduce).
+Some (Impala/Presto) SQL-on-Hadoop engines have daemon processes that can be run where the data is stored, virtually eliminating network transfer costs. There is still
+some latency overhead (e.g. serialization/deserialization time) associated with pulling data from the underlying storage layer into the computation layer. We are unaware of exactly
+how much of a performance impact this makes.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="data-ingestion">Data Ingestion<a href="#data-ingestion" class="hash-link" aria-label="Direct link to Data Ingestion" title="Direct link to Data Ingestion"></a></h3><p>Druid is built to allow for real-time ingestion of data. You can ingest data and query it immediately upon ingestion,
+the latency between how quickly the event is reflected in the data is dominated by how long it takes to deliver the event to Druid.</p><p>SQL-on-Hadoop, being based on data in HDFS or some other backing store, are limited in their data ingestion rates by the
+rate at which that backing store can make data available. Generally, the backing store is the biggest bottleneck for
+how quickly data can become available.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="query-flexibility">Query Flexibility<a href="#query-flexibility" class="hash-link" aria-label="Direct link to Query Flexibility" title="Direct link to Query Flexibility"></a></h3><p>Druid's query language is fairly low level and maps to how Druid operates internally. Although Druid can be combined with a high level query
+planner to support most SQL queries and analytic SQL queries (minus joins among large tables),
+base Druid is less flexible than SQL-on-Hadoop solutions for generic processing.</p><p>SQL-on-Hadoop support SQL style queries with full joins.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="druid-vs-parquet">Druid vs Parquet<a href="#druid-vs-parquet" class="hash-link" aria-label="Direct link to Druid vs Parquet" title="Direct link to Druid vs Parquet"></a></h2><p>Parquet is a column storage format that is designed to work with SQL-on-Hadoop engines. Parquet doesn't have a [...]
+relies on external sources to pull data out of it.</p><p>Druid's storage format is highly optimized for linear scans. Although Druid has support for nested data, Parquet's storage format is much
+more hierarchical, and is more designed for binary chunking. In theory, this should lead to faster scans in Druid.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#queries" class="table-of-contents__link toc-highlight">Queries</a></li><li><a href="#data-ingestion" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration.html/index.html b/docs/29.0.0/configuration.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/auth.html/index.html b/docs/29.0.0/configuration/auth.html/index.html
new file mode 100644
index 000000000..37aec38b9
--- /dev/null
+++ b/docs/29.0.0/configuration/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/operations/auth">
+ <link rel="canonical" href="/docs/29.0.0/operations/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/operations/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/broker.html/index.html b/docs/29.0.0/configuration/broker.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/caching.html/index.html b/docs/29.0.0/configuration/caching.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration/caching.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/coordinator.html/index.html b/docs/29.0.0/configuration/coordinator.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/extensions.html/index.html b/docs/29.0.0/configuration/extensions.html/index.html
new file mode 100644
index 000000000..ca592665f
--- /dev/null
+++ b/docs/29.0.0/configuration/extensions.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/extensions">
+ <link rel="canonical" href="/docs/29.0.0/configuration/extensions" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/extensions' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/extensions/index.html b/docs/29.0.0/configuration/extensions/index.html
new file mode 100644
index 000000000..48b026422
--- /dev/null
+++ b/docs/29.0.0/configuration/extensions/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/extensions" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/configura [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+are commonly used to add support for deep storages (like HDFS and S3), metadata stores (like MySQL
+and PostgreSQL), new aggregators, new input formats, and so on.</p><p>Production clusters will generally use at least two extensions; one for deep storage and one for a
+metadata store. Many clusters will also use additional extensions.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="core-extensions">Core extensions<a href="#core-extensions" class="hash-link" aria-label="Direct link to Core extensions" title="Direct link to Core extensions"></a></h2><p>Core extensions are maintained by Druid committers.</p><table><thead><tr><th>Name</th><th>Description</th><th>Docs</th></tr></thead><tbody><tr><td>druid-avro-extensions</td><td>Support for data in A [...]
+If you'd like to take on maintenance for a community extension, please post on <a href="https://lists.apache.org/list.html?dev@druid.apache.org" target="_blank" rel="noopener noreferrer">dev@druid.apache.org</a> to let us know!</p><p>All of these community extensions can be downloaded using <a href="/docs/29.0.0/operations/pull-deps">pull-deps</a> while specifying a <code>-c</code> coordinate option to pull <code>org.apache.druid.extensions.contrib:{EXTENSION_NAME}:{DRUID_VERSION}</ [...]
+If we see a community extension actively supported by the community, we can promote it to core based on community feedback.</p><p>For information how to create your own extension, please see <a href="/docs/29.0.0/development/modules">here</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions">Loading extensions<a href="#loading-extensions" class="hash-link" aria-label="Direct link to Loading extensions" title="Direct link to Loading extensions"></a></h2><h3 class [...]
+See the <a href="/docs/29.0.0/configuration/extensions#core-extensions">list of extensions</a> for your options. You
+can load bundled extensions by adding their names to your common.runtime.properties
+<code>druid.extensions.loadList</code> property. For example, to load the postgresql-metadata-storage and
+druid-hdfs-storage extensions, use the configuration:</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.extensions.loadList=["postgresql-metadata-storage", & [...]
+one for a <a href="/docs/29.0.0/tutorials/cluster">clustered configuration</a>. Make sure you are updating the correct
+<code>common.runtime.properties</code> for your setup.</p></div></div><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><d [...]
+on how to install this library, see the <a href="/docs/29.0.0/development/extensions-core/mysql">MySQL extension page</a>.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-community-extensions">Loading community extensions<a href="#loading-community-extensions" class="hash-link" aria-label="Direct link to Loading community extensions" title="Direct link to Loading community extensions"></a></h3><p>You can also load community and third-party extensions not alread [...]
+then install it into your <code>extensions</code> directory. You can download extensions from their distributors directly, or
+if they are available from Maven, the included <a href="/docs/29.0.0/operations/pull-deps">pull-deps</a> can download them for you. To use <em>pull-deps</em>,
+specify the full Maven coordinate of the extension in the form <code>groupId:artifactId:version</code>. For example,
+for the (hypothetical) extension <em>com.example:druid-example-extension:1.0.0</em>, run:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java </span><span class="token punctuation" [...]
+<code>druid.extensions.loadList</code> in common.runtime.properties to instruct Druid to load the extension.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6 [...]
+of the extension, and the version is the latest Druid stable version.</p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="loading-extensions-from-the-classpath">Loading extensions from the classpath<a href="#loading-extensions-from-the-classpath" class="hash-link" aria-label="Direct link to Loading extensions from the classpath" title="Direct link to Loading extensions from the classpath"></a></h3><p>If you add your extension jar to the classpath at runtime, Druid will als [...]
+but it also means that you have to ensure that all dependency jars on the classpath are compatible. That is, Druid makes no provisions while using
+this method to maintain class loader isolation so you must make sure that the jars on your classpath are mutually compatible.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/configuration/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Configuration reference</div></a><a class="pagination-nav__link pagination-nav__link--next" href= [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/hadoop.html/index.html b/docs/29.0.0/configuration/hadoop.html/index.html
new file mode 100644
index 000000000..79db47261
--- /dev/null
+++ b/docs/29.0.0/configuration/hadoop.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/hadoop">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/hadoop" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/hadoop' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/historical.html/index.html b/docs/29.0.0/configuration/historical.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/human-readable-byte.html/index.html b/docs/29.0.0/configuration/human-readable-byte.html/index.html
new file mode 100644
index 000000000..245a25a57
--- /dev/null
+++ b/docs/29.0.0/configuration/human-readable-byte.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/human-readable-byte">
+ <link rel="canonical" href="/docs/29.0.0/configuration/human-readable-byte" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/human-readable-byte' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/human-readable-byte/index.html b/docs/29.0.0/configuration/human-readable-byte/index.html
new file mode 100644
index 000000000..ae529fc88
--- /dev/null
+++ b/docs/29.0.0/configuration/human-readable-byte/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/human-readable-byte" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Human-readable Byte Configuration Reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Also, only integers are valid as the number part. For example, you can't replace <code>1200g</code> with <code>1.2t</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="supported-units">Supported Units<a href="#supported-units" class="hash-link" aria-label="Direct link to Supported Units" title="Direct link to Supported Units"></a></h3><p>In the world of computer, a unit like <code>K</code> is ambiguous. It means 1000 or 1024 in different contexts, for more information ple [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/index.html b/docs/29.0.0/configuration/index.html
new file mode 100644
index 000000000..fc7773d11
--- /dev/null
+++ b/docs/29.0.0/configuration/index.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/index" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Configuration reference | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+For example, if <code>druid.zk.paths.base</code> is set to <code>/druid1</code> and <code>druid.zk.paths.indexer.base</code> is set to <code>/druid2</code> then <code>druid.zk.paths.announcementsPath</code> will default to <code>/druid1/announcements</code> while <code>druid.zk.paths.indexer.announcementsPath</code> will default to <code>/druid2/announcements</code>.</p><p>The following path is used for service discovery. It is <strong>not</strong> affected by <code>druid.zk.paths.base</ [...]
+and <code>druid.tlsPort</code> properties on each service. Please see <code>Configuration</code> section of individual services to check the valid and default values for these ports.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="jetty-server-tls-configuration">Jetty server TLS configuration<a href="#jetty-server-tls-configuration" class="hash-link" aria-label="Direct link to Jetty server TLS configuration" title="Direct link to Jetty server TLS configuration"></a></h4><p>Druid u [...]
+The <a href="http://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html" target="_blank" rel="noopener noreferrer">Java Cryptography Architecture
+Standard Algorithm Name Documentation for JDK 8</a> lists all possible
+values for the following properties, among others provided by the Java implementation.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.server.https.keyStorePath</code></td><td>The file path or URL of the TLS/SSL KeyStore.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.https.keyStoreType</code></td><td>The type of the KeyStore.</td><td>none</td><td>yes</td></tr><tr><td><code>druid.server.https [...]
+values for the above mentioned configs among others provided by Java implementation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authentication-and-authorization">Authentication and authorization<a href="#authentication-and-authorization" class="hash-link" aria-label="Direct link to Authentication and authorization" title="Direct link to Authentication and authorization"></a></h3><table><thead><tr><th>Property</th><th>Type</th><th>Description</th><th>Default</th><th>Required</ [...]
+For an example of setting up request logging, see <a href="/docs/29.0.0/operations/request-logging">Request logging</a>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.type</code></td><td>How to log every query request. Choices: <code>noop</code>, <a href="#file-request-logging"><code>file</code></a>, <a href="#emitter-request-logging"><code>emitter</code></a>, <a href="#slf4j-request-logging"><code>slf4j< [...]
+For native queries, the logger only logs requests when the <code>query/time</code> metric exceeds the threshold provided in <code>queryTimeThresholdMs</code>.
+For SQL queries, it only logs requests when the <code>sqlQuery/time</code> metric exceeds threshold provided in <code>sqlQueryTimeThresholdMs</code>.
+See <a href="/docs/29.0.0/operations/metrics">Metrics</a> for more details on query metrics.</p><p>Requests that meet the threshold are logged using the request logger type set in <code>druid.request.logging.delegate.type</code>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.request.logging.queryTimeThresholdMs</code></td><td>Threshold value for the <code>query/time</code> metric in milliseconds.</td><td>0, i.e., no filt [...]
+<code>druid.emitter.logging.loggerClass</code> to emit events. Each event is logged as a single <code>json</code> object with a
+<a href="https://logging.apache.org/log4j/2.x/manual/markers.html" target="_blank" rel="noopener noreferrer">Marker</a> as the feed of the event. Users may wish to edit the
+log4j config to route these logs to different sources based on the feed of the event.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.logging.loggerClass</code></td><td>The class used for logging.</td><td><code>org.apache.druid.java.util.emitter.core.LoggingEmitter</code></td></tr><tr><td><code>druid.emitter.logging.logLevel</code></td><td>Choices: debug, info, warn, error. The log level at which message are logged [...]
+For example:</p><ul><li><code>druid.emitter.parametrized.httpEmitting.flushMillis</code></li><li><code>druid.emitter.parametrized.httpEmitting.flushCount</code></li><li><code>druid.emitter.parametrized.httpEmitting.ssl.trustStorePath</code></li></ul><p>Do not specify <code>recipientBaseUrl</code> with the parametrized emitter.
+Instead use <code>recipientBaseUrlPattern</code> described in the table below.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.emitter.parametrized.recipientBaseUrlPattern</code></td><td>The URL pattern to send an event to, based on the event's feed. For example, <code>http://foo.bar/{feed}</code>, that will send event to <code>http://foo.bar/metrics</code> if the event's feed is "metrics".</td><td>none [...]
+The below table shows some important configurations for S3. See <a href="/docs/29.0.0/development/extensions-core/s3">S3 Deep Storage</a> for full configurations.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.bucket</code></td><td>S3 bucket name.</td><td>none</td></tr><tr><td><code>druid.storage.baseKey</code></td><td>S3 object key prefix for storage.</td><td>none</td></tr><tr><td><code>druid.storage.disableAcl</ [...]
+the <a href="/docs/29.0.0/ingestion/input-sources#hdfs-input-source">HDFS input source</a>.</p><table><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.hdfs.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HDFS input source and HDFS firehose.</td><td><code>["hdfs"]</code></td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="http-input [...]
+the <a href="/docs/29.0.0/ingestion/input-sources#http-input-source">HTTP input source</a>.</p><table><thead><tr><th>Property</th><th>Possible values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.ingestion.http.allowedProtocols</code></td><td>List of protocols</td><td>Allowed protocols for the HTTP input source and HTTP firehose.</td><td><code>["http", "https"]</code></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_L [...]
+When you specify an error response transform strategy other than <code>none</code>, Druid transforms the error responses from Druid services as follows:</p><ul><li>For any query API that fails in the Router service, Druid sets the fields <code>errorClass</code> and <code>host</code> to null. Druid applies the transformation strategy to the <code>errorMessage</code> field.</li><li>For any SQL query API that fails, for example <code>POST /druid/v2/sql/...</code>, Druid sets the fields <cod [...]
+This is the default Druid error response mode. To explicitly enable this strategy, set <code>druid.server.http.errorResponseTransform.strategy</code> to <code>none</code>.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="allowed-regular-expression-error-response-transform-strategy">Allowed regular expression error response transform strategy<a href="#allowed-regular-expression-error-response-transform-strategy" class="hash-link" aria-label="Direct link to Allowed regular expression [...]
+the following properties.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.javascript.enabled</code></td><td>Set to "true" to enable JavaScript functionality. This affects the JavaScript parser, filter, extractionFn, aggregator, post-aggregator, router strategy, and worker selection strategy.</td><td>false</td></tr></tbody></table><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9 [...]
+doubleSum, doubleMin, and doubleMax aggregators at indexing time.
+Starting from version 0.13.0 the default will be 64-bit floats for Double columns.
+Using 64-bit representation for double column will lead to avoid precision loss at the cost of doubling the storage size of such columns.
+To keep the old format set the system-wide property <code>druid.indexing.doubleStorage=float</code>.
+You can also use <code>floatSum</code>, <code>floatMin</code>, and <code>floatMax</code> to use 32-bit float representation.
+Support for 64-bit floating point columns was released in Druid 0.11.0, so if you use this feature then older versions of Druid will not be able to read your data segments.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.indexing.doubleStorage</code></td><td>Set to "float" to use 32-bit double representation for double columns.</td><td>double</td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" [...]
+You can configure these parameters using the <a href="/docs/29.0.0/operations/web-console">web console</a>(recommended) or through the <a href="/docs/29.0.0/api-reference/dynamic-configuration-api#coordinator-dynamic-configuration">Coordinator dynamic configuration API</a>.</p><p>The following table shows the dynamic configuration properties for the Coordinator.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>millisToWaitBeforeD [...]
+If you enable this mode, do not provide values for the properties in the table below as the Coordinator computes them automatically.
+Druid computes the values to optimize Coordinator performance, based on the current state of the cluster.</p><p>If you enable <code>smartSegmentLoading</code> mode, Druid ignores any value you provide for the following properties.</p><table><thead><tr><th>Property</th><th>Computed value</th><th>Description</th></tr></thead><tbody><tr><td><code>useRoundRobinSegmentAssignment</code></td><td>true</td><td>Speeds up segment assignment.</td></tr><tr><td><code>maxSegmentsInNodeLoadingQueue</cod [...]
+Disable <code>smartSegmentLoading</code> only if you want to explicitly set the values of any of the above properties.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="lookups-dynamic-configuration">Lookups dynamic configuration<a href="#lookups-dynamic-configuration" class="hash-link" aria-label="Direct link to Lookups dynamic configuration" title="Direct link to Lookups dynamic configuration"></a></h5><p>These configuration options control Coordinator lookup management. For confi [...]
+<a href="/docs/29.0.0/api-reference/automatic-compaction-api">Automatic compaction API</a> without restarting Coordinators.</p><p>For details about segment compaction, see <a href="/docs/29.0.0/operations/segment-optimization">Segment size optimization</a>.</p><p>You can configure automatic compaction through the following properties:</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>dataSource</code></td><td>The datasource name [...]
+You may see this issue with streaming ingestion from Kafka and Kinesis, which ingest late-arriving data.</p><p>To mitigate this problem, set <code>skipOffsetFromLatest</code> to a value large enough so that arriving data tends to fall outside the offset value from the current time. This way you can avoid conflicts between compaction tasks and realtime ingestion tasks.
+For example, if you want to skip over segments from thirty days prior to the end time of the most recent segment, assign <code>"skipOffsetFromLatest": "P30D"</code>.
+For more information, see <a href="/docs/29.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="automatic-compaction-tuningconfig">Automatic compaction tuningConfig<a href="#automatic-compaction-tuningconfig" class="hash-link" aria-label="Direct link to Automatic compaction tuningConfig" title="Direct link to Automatic compaction tuningConfig"></a></h6><p>Auto-compaction suppor [...]
+The below is a list of the supported configurations for auto-compaction.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th><th>Required</th></tr></thead><tbody><tr><td><code>dropExisting</code></td><td>If <code>true</code> the compaction task replaces all existing segments fully contained by the umbrella interval of the compacted segments when the task publishes new segments and tombstones. If compaction fails, Druid does not publish any segments or tombstones. WA [...]
+You can configure these parameters using the <a href="/docs/29.0.0/operations/web-console">web console</a> or through the <a href="/docs/29.0.0/api-reference/dynamic-configuration-api#overlord-dynamic-configuration">Overlord dynamic configuration API</a>.</p><p>The following table shows the dynamic configuration properties for the Overlord.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>selectStrategy</code></td><td>Describes h [...]
+At a high level, the select strategy determines the list of eligible workers for a given task using
+either an <code>affinityConfig</code> or a <code>categorySpec</code>. Then, Druid assigns the task by either trying to distribute load equally
+(<code>equalDistribution</code>) or to fill as many workers as possible to capacity (<code>fillCapacity</code>).
+There are 4 options for select strategies:</p><ul><li><a href="#equaldistribution"><code>equalDistribution</code></a></li><li><a href="#equaldistributionwithcategoryspec"><code>equalDistributionWithCategorySpec</code></a></li><li><a href="#fillcapacity"><code>fillCapacity</code></a></li><li><a href="#fillcapacitywithcategoryspec"><code>fillCapacityWithCategorySpec</code></a></li></ul><p>A <code>javascript</code> option is also available but should only be used for prototyping new strateg [...]
+not be assigned a category, and you want the work to be concentrated on the fewest number of workers to allow the empty ones to scale down.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="equaldistribution"><code>equalDistribution</code><a href="#equaldistribution" class="hash-link" aria-label="Direct link to equaldistribution" title="Direct link to equaldistribution"></a></h6><p>Tasks are assigned to the MiddleManager with the most free slots at the time the task begins running.
+This evenly distributes work across your MiddleManagers.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>equalDistribution</code></td><td>required; must be <code>equalDistribution</code></td></tr><tr><td><code>affinityConfig</code></td><td><a href="#affinityconfig"><code>AffinityConfig</code></a> object</td><td>null (no affinity)</td></tr></tbody></table><h6 class="anchor anchorWithStickyNavbar_LWe7" id [...]
+By specifying <code>workerCategorySpec</code>, you can assign tasks to run on different categories of MiddleManagers based on the <strong>type</strong> and <strong>dataSource</strong> of the task.
+This strategy doesn't work with <code>AutoScaler</code> since the behavior is undefined.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>equalDistributionWithCategorySpec</code></td><td>required; must be <code>equalDistributionWithCategorySpec</code></td></tr><tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec"><code>WorkerCategorySpec</code></a> object</td><td>null (no wor [...]
+useful when you are auto-scaling MiddleManagers since it tends to pack some full and
+leave others empty. The empty ones can be safely terminated.</p><p>Note that if <code>druid.indexer.runner.pendingTasksRunnerNumThreads</code> is set to <em>N</em> > 1, then this strategy will fill <em>N</em>
+MiddleManagers up to capacity simultaneously, rather than a single MiddleManager.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>fillCapacity</code></td><td>required; must be <code>fillCapacity</code></td></tr><tr><td><code>affinityConfig</code></td><td><a href="#affinityconfig"><code>AffinityConfig</code></a> object</td><td>null (no affinity)</td></tr></tbody></table><h6 class="anchor anchorWithSticky [...]
+The usage is the same as <code>equalDistributionWithCategorySpec</code> strategy.
+This strategy doesn't work with <code>AutoScaler</code> since the behavior is undefined.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>fillCapacityWithCategorySpec</code>.</td><td>required; must be <code>fillCapacityWithCategorySpec</code></td></tr><tr><td><code>workerCategorySpec</code></td><td><a href="#workercategoryspec"><code>WorkerCategorySpec</code></a> object</td><td>null (no worker categ [...]
+The function is passed remoteTaskRunnerConfig, map of workerId to available workers and task to be executed and returns the workerId on which the task should be run or null if the task cannot be run.
+It can be used for rapid development of missing features where the worker selection logic is to be changed or tuned often.
+If the selection logic is quite complex and cannot be easily tested in JavaScript environment,
+its better to write a druid extension module with extending current worker selection strategies written in java.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>type</code></td><td><code>javascript</code></td><td>required; must be <code>javascript</code></td></tr><tr><td><code>function</code></td><td>String representing JavaScript function</td><td></td></tr></tbody></table><p>The following example shows a function that sends <co [...]
+If not provided, the default is to have no affinity.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>affinity</code></td><td>JSON object mapping a datasource String name to a list of indexing service MiddleManager <code>host:port</code> values. Druid doesn't perform DNS resolution, so the 'host' value must match what is configured on the MiddleManager and what the MiddleManager announces itself as (examine the Ove [...]
+field. If not provided, the default is to not use it at all.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>categoryMap</code></td><td>A JSON map object mapping a task type String name to a <a href="#categoryconfig">CategoryConfig</a> object, by which you can specify category config for different task type.</td><td><code>{}</code></td></tr><tr><td><code>strong</code></td><td>With weak workerCategorySpec (the default), tasks for [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> in
+<code>druid.indexer.runner.javaOptsArray</code> as documented above.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-query-configuration">Peon query configuration<a href="#peon-query-configuration" class="hash-link" aria-label="Direct link to Peon query configuration" title="Direct link to Peon query configuration"></a></h4><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="peon-caching">Peon ca [...]
+The following types of medium exist for the buffers:</p><ul><li><p><strong>Temporary files</strong> (<code>tmpFile</code>) are stored under the task working directory (see <code>druid.worker.baseTaskDirs</code> configuration above) and thus share it's mounting properties. For example, they could be backed by HDD, SSD or memory (tmpfs).
+This type of medium may do unnecessary disk I/O and requires some disk space to be available.</p></li><li><p><strong>Off-heap memory</strong> (<code>offHeapMemory</code>) creates buffers in off-heap memory of a JVM process that is running a task.
+This type of medium is preferred, but it may require to allow the JVM to have more off-heap memory, by changing <code>-XX:MaxDirectMemorySize</code> configuration. It is not yet understood how does the required off-heap memory size relates to the size of the segments being created. But definitely it doesn't make sense to add more extra off-heap memory, than the configured maximum <em>heap</em> size (<code>-Xmx</code>) for the same JVM.</p></li><li><p><strong>On-heap memory</strong> [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="query-configurations">Query configurations<a href="#query-configurations" class="hash-link" aria-label="Direct link to Query configurations" title="Direct link to Query configurations"></a></h4><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="indexer-caching">Indexer caching<a href="#indexer-caching" class="hash-link" aria-label="Direct link to [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="historical-query-configuration">Historical query configuration<a href="#historical-query-configuration" class="hash-link" aria-label="Direct link to Historical query configuration" title="Direct link to Historical query configuration"></a></h5><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="historical-caching">Historical caching<a href="#histor [...]
+Therefore, there are guardrails that are built in Druid to prevent the queries from generating subquery results which can exhaust the heap
+space. They can be set on a cluster level or modified per query level as desired.
+Note the following guardrails that can be set by the cluster admin to limit the subquery results:</p><ol><li><code>druid.server.http.maxSubqueryRows</code> in broker's config to set a default for the entire cluster or <code>maxSubqueryRows</code> in the query context to set an upper limit on the number of rows a subquery can generate</li><li><code>druid.server.http.maxSubqueryBytes</code> in broker's config to set a default for the entire cluster or <code>maxSubqueryBytes</code [...]
+rows in the order of magnitude of around 10 million and above. In those scenarios, disable the <code>maxSubqueryBytes</code> settings for such queries, assess the number of rows that the subqueries generate and override the <code>maxSubqueryRows</code> to appropriate value.</p><p>If you choose to modify or set any of the above limits, you must also think about the heap size of all Brokers, Historicals, and task Peons that process data for the subqueries to accommodate the subquery results.
+There is no formula to calculate the correct value. Trial and error is the best approach.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="manual-laning-strategy">Manual laning strategy<a href="#manual-laning-strategy" class="hash-link" aria-label="Direct link to Manual laning strategy" title="Direct link to Manual laning strategy"></a></h6><p>This laning strategy is best suited for cases where one or more external applications which query Druid are capable of manually deciding wha [...]
+client has the following configuration options.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.http.numConnections</code></td><td>Size of connection pool for the Broker to connect to Historical and real-time processes. If there are more queries than this number that all need to speak to the same process, then they will queue up.</td><td>20</td></tr><tr><td><code>druid.broker.http.eagerInitialization</code></td><td> [...]
+<code>druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + 1)</code>. You can
+ensure at least this amount of direct memory is available by providing <code>-XX:MaxDirectMemorySize=<VALUE></code> at the command
+line.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="broker-query-configuration">Broker query configuration<a href="#broker-query-configuration" class="hash-link" aria-label="Direct link to Broker query configuration" title="Direct link to Broker query configuration"></a></h5><p>See <a href="#general-query-configuration">general query configuration</a>.</p><h6 class="anchor anchorWithStickyNavbar_LWe7" id="broker-generated-query-configuration-supplementation">Broker generated que [...]
+of these queries.</p><p>As of now the only supported augmentation is overriding the default query context. This allows an operator the flexibility
+to adjust it as they see fit. A common use of this configuration is to override the query priority of the cluster generated
+queries in order to avoid running as a default priority of 0.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.broker.internal.query.config.context</code></td><td>A string formatted <code>key:value</code> map of a query context to add to internally generated broker queries.</td><td>null</td></tr></tbody></table><h4 class="anchor anchorWithStickyNavbar_LWe7" id="sql">SQL<a href="#sql" class="hash-link" aria-label="Direct lin [...]
+These properties are no longer available. Since Druid 0.18.0, you can use <code>druid.server.http.maxSubqueryRows</code> to control the maximum
+number of rows permitted across all subqueries.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="broker-caching">Broker caching<a href="#broker-caching" class="hash-link" aria-label="Direct link to Broker caching" title="Direct link to Broker caching"></a></h4><p>You can optionally only configure caching to be enabled on the Broker by setting caching configs here.</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></th [...]
+See <a href="/docs/29.0.0/querying/caching">Query caching</a> for more information.</p></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="segment-discovery">Segment discovery<a href="#segment-discovery" class="hash-link" aria-label="Direct link to Segment discovery" title="Direct link to Segment discovery"></a></h4><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.serverview.type</code></td> [...]
+<a href="#broker-caching">Broker</a>, <a href="#historical-caching">Historical</a>, and <a href="#peon-caching">Peon</a> configuration options for how to
+enable it for different processes.</p><p>Druid uses a local in-memory cache by default, unless a different type of cache is specified.
+Use the <code>druid.cache.type</code> configuration to set a different kind of cache.</p><p>Cache settings are set globally, so the same configuration can be re-used
+for both Broker and Historical processes, when defined in the common properties file.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="cache-type">Cache type<a href="#cache-type" class="hash-link" aria-label="Direct link to Cache type" title="Direct link to Cache type"></a></h3><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.cache.type</code></td><td><code>local</code>, <code>memcached</code>, <c [...]
+This may be used to combine a local in-memory cache with a remote memcached cache.</p><p>Cache requests will first check L1 cache before checking L2.
+If there is an L1 miss and L2 hit, it will also populate L1.</p><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.cache.l1.type</code></td><td>The type of cache to use for L1 cache. See <code>druid.cache.type</code> configuration for valid types.</td><td><code>caffeine</code></td></tr><tr><td><code>druid.cache.l2.type</code></td><td>The type of cache to use for L2 cache. See <code>druid.cache.type</code> configuration for valid [...]
+The <code>druid.query.default.context.{query_context_key}</code> runtime property prefix applies to all current and future query context keys, the same as how query context parameter passed with the query works. You can override the runtime property value if the value for the same key is specified in the query contexts.</p><p>The precedence chain for query context values is as follows:</p><p>hard-coded default value in Druid code <- runtime property not prefixed with <code>druid.query [...]
+<- runtime property prefixed with <code>druid.query.default.context</code> <- context parameter in the query</p><p>Note that not all query context key has a runtime property not prefixed with <code>druid.query.default.context</code> that can
+override the hard-coded default value. For example, <code>maxQueuedBytes</code> has <code>druid.broker.http.maxQueuedBytes</code>
+but <code>joinFilterRewriteMaxSize</code> does not. Hence, the only way of overriding <code>joinFilterRewriteMaxSize</code> hard-coded default
+value is with runtime property <code>druid.query.default.context.joinFilterRewriteMaxSize</code>.</p><p>To further elaborate on the previous example:</p><p>If neither <code>druid.broker.http.maxQueuedBytes</code> or <code>druid.query.default.context.maxQueuedBytes</code> is set and
+the query does not have <code>maxQueuedBytes</code> in the context, then the hard-coded value in Druid code is use.
+If runtime property only contains <code>druid.broker.http.maxQueuedBytes=x</code> and query does not have <code>maxQueuedBytes</code> in the
+context, then the value of the property, <code>x</code>, is use. However, if query does have <code>maxQueuedBytes</code> in the context,
+then that value is use instead.
+If runtime property only contains <code>druid.query.default.context.maxQueuedBytes=y</code> OR runtime property contains both
+<code>druid.broker.http.maxQueuedBytes=x</code> and <code>druid.query.default.context.maxQueuedBytes=y</code>, then the value of
+<code>druid.query.default.context.maxQueuedBytes</code>, <code>y</code>, is use (given that query does not have <code>maxQueuedBytes</code> in the
+context). If query does have <code>maxQueuedBytes</code> in the context, then that value is use instead.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="topn-query-config">TopN query config<a href="#topn-query-config" class="hash-link" aria-label="Direct link to TopN query config" title="Direct link to TopN query config"></a></h3><table><thead><tr><th>Property</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.query.topN.minTopNThreshold</code></td><td [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/indexing-service.html/index.html b/docs/29.0.0/configuration/indexing-service.html/index.html
new file mode 100644
index 000000000..f93f4884f
--- /dev/null
+++ b/docs/29.0.0/configuration/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/">
+ <link rel="canonical" href="/docs/29.0.0/configuration/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/logging.html/index.html b/docs/29.0.0/configuration/logging.html/index.html
new file mode 100644
index 000000000..6db6e0422
--- /dev/null
+++ b/docs/29.0.0/configuration/logging.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/configuration/logging">
+ <link rel="canonical" href="/docs/29.0.0/configuration/logging" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/configuration/logging' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/logging/index.html b/docs/29.0.0/configuration/logging/index.html
new file mode 100644
index 000000000..fd9040641
--- /dev/null
+++ b/docs/29.0.0/configuration/logging/index.html
@@ -0,0 +1,45 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-configuration/logging" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Logging | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/configuratio [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The same services also emit periodic <a href="/docs/29.0.0/configuration/#enabling-metrics">metrics</a> about their state.
+To disable metric info logs set the following runtime property: <code>-Ddruid.emitter.logging.logLevel=debug</code>.</p><p>Druid uses <a href="http://logging.apache.org/log4j/2.x/" target="_blank" rel="noopener noreferrer">log4j2</a> for logging.
+The default configuration file log4j2.xml ships with Druid at the following path: <code>conf/druid/{config}/_common/log4j2.xml</code>.</p><p>By default, Druid uses <code>RollingRandomAccessFile</code> for rollover daily, and keeps log files up to 7 days.
+If that's not suitable in your case, modify the <code>log4j2.xml</code> accordingly.</p><p>The following example log4j2.xml is based upon the micro quickstart:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span clas [...]
+<a href="/docs/29.0.0/configuration/#log-long-term-storage">long-term storage</a>.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></s [...]
+Druid shares the log4j configuration file among all services, including task peon processes.
+However, you must define a console appender in the logger for your peon processes.
+If you don't define a console appender, Druid creates and configures a new console appender
+that retains the log level, such as <code>info</code> or <code>warn</code>, but does not retain any other appender
+configuration, including non-console ones.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="log-directory">Log directory<a href="#log-directory" class="hash-link" aria-label="Direct link to Log directory" title="Direct link to Log directory"></a></h2><p>The included log4j2.xml configuration for Druid and ZooKeeper writes logs to the <code>log</code> directory at the root of the distribution.</p><p>If you want to change the log directory, set the environment variable <co [...]
+Log4j2 writes the main log file and rotates it periodically.
+For example, <code>log/historical.log</code>.</p><p>The secondary log file contains anything that is written by the component
+directly to standard output or standard error without going through log4j2.
+For example, <code>log/historical.stdout.log</code>.
+This consists mainly of messages from the
+Java runtime itself.
+This file is not rotated, but it is generally small due to the low volume of messages.
+If necessary, you can truncate it using the Linux command <code>truncate --size 0 log/historical.stdout.log</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="set-the-logs-to-asynchronously-write">Set the logs to asynchronously write<a href="#set-the-logs-to-asynchronously-write" class="hash-link" aria-label="Direct link to Set the logs to asynchronously write" title="Direct link to Set the logs to asynchronously write"></a></h2><p>If your logs are really chatty, you can set [...]
+The following example shows a <code>log4j2.xml</code> that configures some of the more chatty classes to write asynchronously:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"><?xml version=" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/production-cluster.html/index.html b/docs/29.0.0/configuration/production-cluster.html/index.html
new file mode 100644
index 000000000..93488f7a8
--- /dev/null
+++ b/docs/29.0.0/configuration/production-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/29.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/realtime.html/index.html b/docs/29.0.0/configuration/realtime.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/configuration/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/simple-cluster.html/index.html b/docs/29.0.0/configuration/simple-cluster.html/index.html
new file mode 100644
index 000000000..93488f7a8
--- /dev/null
+++ b/docs/29.0.0/configuration/simple-cluster.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/tutorials/cluster">
+ <link rel="canonical" href="/docs/29.0.0/tutorials/cluster" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/tutorials/cluster' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/configuration/zookeeper.html/index.html b/docs/29.0.0/configuration/zookeeper.html/index.html
new file mode 100644
index 000000000..9e100091f
--- /dev/null
+++ b/docs/29.0.0/configuration/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/29.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management.html/index.html b/docs/29.0.0/data-management.html/index.html
new file mode 100644
index 000000000..3687e0e84
--- /dev/null
+++ b/docs/29.0.0/data-management.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/">
+ <link rel="canonical" href="/docs/29.0.0/data-management/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/automatic-compaction.html/index.html b/docs/29.0.0/data-management/automatic-compaction.html/index.html
new file mode 100644
index 000000000..91f182675
--- /dev/null
+++ b/docs/29.0.0/data-management/automatic-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/automatic-compaction">
+ <link rel="canonical" href="/docs/29.0.0/data-management/automatic-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/automatic-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/automatic-compaction/index.html b/docs/29.0.0/data-management/automatic-compaction/index.html
new file mode 100644
index 000000000..ac9bd470c
--- /dev/null
+++ b/docs/29.0.0/data-management/automatic-compaction/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/automatic-compaction" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Automatic compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This topic guides you through setting up automatic compaction for your Druid cluster. See the <a href="#examples">examples</a> for common use cases for automatic compaction.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-druid-manages-automatic-compaction">How Druid manages automatic compaction<a href="#how-druid-manages-automatic-compaction" class="hash-link" aria-label="Direct link to How Druid manages automatic compaction" title="Direct link to How Druid manages automatic c [...]
+The default indexing period is 30 minutes, meaning that the Coordinator first checks for segments to compact at most 30 minutes from when auto-compaction is enabled.
+This time period affects other Coordinator duties including merge and conversion tasks.
+To configure the auto-compaction time period without interfering with <code>indexingPeriod</code>, see <a href="#set-frequency-of-compaction-runs">Set frequency of compaction runs</a>.</p><p>At every invocation of auto-compaction, the Coordinator initiates a <a href="/docs/29.0.0/design/coordinator#segment-search-policy-in-automatic-compaction">segment search</a> to determine eligible segments to compact.
+When there are eligible segments to compact, the Coordinator issues compaction tasks based on available worker capacity.
+If a compaction task takes longer than the indexing period, the Coordinator waits for it to finish before resuming the period for segment search.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3. [...]
+This process differs for manual compaction tasks, which can be submitted from the <a href="/docs/29.0.0/operations/web-console">Tasks view of the web console</a> or the <a href="/docs/29.0.0/api-reference/tasks-api">Tasks API</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="web-console">Web console<a href="#web-console" class="hash-link" aria-label="Direct link to Web console" title="Direct link to Web console"></a></h3><p>Use the web console to enable automatic compaction for [...]
+<img loading="lazy" alt="Compaction config in web console" src="/assets/images/compaction-config-2d5e391fe681a9c978060c383357b531.png" width="1250" height="640" class="img_ev3q"></p><p>To disable auto-compaction for a datasource, click <strong>Delete</strong> from the <strong>Compaction config</strong> dialog. Druid does not retain your auto-compaction configuration.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-configuration-api">Compaction configuration API<a href="# [...]
+To enable auto-compaction for a datasource, create a JSON object with the desired auto-compaction settings.
+See <a href="#configure-automatic-compaction">Configure automatic compaction</a> for the syntax of an auto-compaction spec.
+Send the JSON object as a payload in a <a href="/docs/29.0.0/api-reference/automatic-compaction-api#create-or-update-automatic-compaction-configuration"><code>POST</code> request</a> to <code>/druid/coordinator/v1/config/compaction</code>.
+The following example configures auto-compaction for the <code>wikipedia</code> datasource:</p><div class="language-sh codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-sh codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">curl --location --request POST 'http://loc [...]
+The automatic compaction system uses the following syntax:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></s [...]
+The following properties only apply to auto-compaction:</p><ul><li><code>skipOffsetFromLatest</code></li><li><code>taskPriority</code></li><li><code>taskContext</code></li></ul><p>Since the automatic compaction system provides a management layer on top of manual compaction tasks,
+the auto-compaction configuration does not include task-specific properties found in a typical Druid ingestion spec.
+The following properties are automatically set by the Coordinator:</p><ul><li><code>type</code>: Set to <code>compact</code>.</li><li><code>id</code>: Generated using the task type, datasource name, interval, and timestamp. The task ID is prefixed with <code>coordinator-issued</code>.</li><li><code>context</code>: Set according to the user-provided <code>taskContext</code>.</li></ul><p>Compaction tasks typically fetch all <a href="/docs/29.0.0/data-management/manual-compaction#compaction [...]
+<em>unless</em> the following properties are all set to non-null values. It is strongly recommended to set them to non-null values to
+maximize performance and minimize disk usage of the <code>compact</code> tasks launched by auto-compaction:</p><ul><li><a href="/docs/29.0.0/data-management/manual-compaction#compaction-granularity-spec"><code>granularitySpec</code></a>, with non-null values for each of <code>segmentGranularity</code>, <code>queryGranularity</code>, and <code>rollup</code></li><li><a href="/docs/29.0.0/data-management/manual-compaction#compaction-dimensions-spec"><code>dimensionsSpec</code></a></li><li>< [...]
+Set the time period of the duty group in the <code>coordinator/runtime.properties</code> file.
+The following example shows how to create a duty group named <code>compaction</code> and set the auto-compaction period to 1 minute:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.coordinato [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/compaction.html/index.html b/docs/29.0.0/data-management/compaction.html/index.html
new file mode 100644
index 000000000..9a2f791b0
--- /dev/null
+++ b/docs/29.0.0/data-management/compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/compaction">
+ <link rel="canonical" href="/docs/29.0.0/data-management/compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/compaction/index.html b/docs/29.0.0/data-management/compaction/index.html
new file mode 100644
index 000000000..808ee13b6
--- /dev/null
+++ b/docs/29.0.0/data-management/compaction/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/compaction" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/data-mana [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Another option is to set the compaction task to higher priority than the ingestion task.
+For more information, see <a href="/docs/29.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="segment-granularity-handling">Segment granularity handling<a href="#segment-granularity-handling" class="hash-link" aria-label="Direct link to Segment granularity handling" title="Direct link to Segment granularity handling"></a></h3><p>Unless you modify the segment granularity in <a [...]
+See <a href="/docs/29.0.0/ingestion/rollup">Roll-up</a> for more details.
+You can check that your segments are rolled up or not by using <a href="/docs/29.0.0/querying/segmentmetadataquery#analysistypes">Segment Metadata Queries</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2><p>See the following topics for more information:</p><ul><li><a href="/docs/29.0.0/operations/segment-optimization">Segment optimizat [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/delete.html/index.html b/docs/29.0.0/data-management/delete.html/index.html
new file mode 100644
index 000000000..4bf8c9afa
--- /dev/null
+++ b/docs/29.0.0/data-management/delete.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/delete">
+ <link rel="canonical" href="/docs/29.0.0/data-management/delete" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/delete' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/delete/index.html b/docs/29.0.0/data-management/delete/index.html
new file mode 100644
index 000000000..b07dc45b8
--- /dev/null
+++ b/docs/29.0.0/data-management/delete/index.html
@@ -0,0 +1,51 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/delete" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Data deletion | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/data-m [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+deleting data for time chunks by dropping segments. This is a fast, metadata-only operation.</p><p>Deletion by time range happens in two steps:</p><ol><li>Segments to be deleted must first be marked as <a href="/docs/29.0.0/design/storage#segment-lifecycle">"unused"</a>. This can
+happen when a segment is dropped by a <a href="/docs/29.0.0/operations/rule-configuration">drop rule</a> or when you manually mark a
+segment unused through the Coordinator API or web console. This is a soft delete: the data is not available for
+querying, but the segment files remains in deep storage, and the segment records remains in the metadata store.</li><li>Once a segment is marked "unused", you can use a <a href="#kill-task"><code>kill</code> task</a> to permanently delete the segment file from
+deep storage and remove its record from the metadata store. This is a hard delete: the data is unrecoverable unless
+you have a backup.</li></ol><p>For documentation on disabling segments using the Coordinator API, see the
+<a href="/docs/29.0.0/api-reference/legacy-metadata-api#datasources">Legacy metadata API reference</a>.</p><p>A data deletion tutorial is available at <a href="/docs/29.0.0/tutorials/tutorial-delete-data">Tutorial: Deleting data</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="by-time-range-automatically">By time range, automatically<a href="#by-time-range-automatically" class="hash-link" aria-label="Direct link to By time range, automatically" title="Direct link to By time ran [...]
+where data should be preserved, and intervals where data should be discarded. Data that falls under a drop rule is
+marked unused, in the same manner as if you <a href="#by-time-range-manually">manually mark that time range unused</a>. This is a
+fast, metadata-only operation.</p><p>Data that is dropped in this way is marked unused, but remains in deep storage. To permanently delete it, use a
+<a href="#kill-task"><code>kill</code> task</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="specific-records">Specific records<a href="#specific-records" class="hash-link" aria-label="Direct link to Specific records" title="Direct link to Specific records"></a></h2><p>Druid supports deleting specific records using <a href="/docs/29.0.0/data-management/update#reindex">reindexing</a> with a filter. The filter specifies which
+data remains after reindexing, so it must be the inverse of the data you want to delete. Because segments must be
+rewritten to delete data in this way, it can be a time-consuming operation.</p><p>For example, to delete records where <code>userName</code> is <code>'bob'</code> with native batch indexing, use a
+<a href="/docs/29.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> with filter <code>{"type": "not", "field": {"type":
+"selector", "dimension": "userName", "value": "bob"}}</code>.</p><p>To delete the same records using SQL, use <a href="/docs/29.0.0/multi-stage-query/concepts#replace">REPLACE</a> with <code>WHERE userName <> 'bob'</code>.</p><p>To reindex using <a href="/docs/29.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/29.0.0/ingestion/input-sources#druid-input-source"><code>druid</code> input
+source</a>. If needed,
+<a href="/docs/29.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+reindexing job. To reindex with SQL, use <a href="/docs/29.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a>
+with <code>SELECT ... FROM <table></code>. (Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be
+used to filter, modify, or enrich the data during the reindexing job.</p><p>Data that is deleted in this way is marked unused, but remains in deep storage. To permanently delete it, use a <a href="#kill-task"><code>kill</code>
+task</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="entire-table">Entire table<a href="#entire-table" class="hash-link" aria-label="Direct link to Entire table" title="Direct link to Entire table"></a></h2><p>Deleting an entire table works the same way as <a href="#by-time-range-manually">deleting part of a table by time range</a>. First,
+mark all segments unused using the Coordinator API or web console. Then, optionally, delete it permanently using a
+<a href="#kill-task"><code>kill</code> task</a>.</p><a name="kill-task"></a><h2 class="anchor anchorWithStickyNavbar_LWe7" id="permanently-kill-task">Permanently (<code>kill</code> task)<a href="#permanently-kill-task" class="hash-link" aria-label="Direct link to permanently-kill-task" title="Direct link to permanently-kill-task"></a></h2><p>Data that has been overwritten or soft-deleted still remains as segments that have been marked unused. You can use a
+<code>kill</code> task to permanently delete this data.</p><p>The available grammar is:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span> [...]
+deep storage. This operation cannot be undone.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/data-management/update"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data updates</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/data-management/schema-changes"><div class="pagination-nav__sublabel [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/index.html b/docs/29.0.0/data-management/index.html
new file mode 100644
index 000000000..e9efb5a80
--- /dev/null
+++ b/docs/29.0.0/data-management/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/index" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Data management | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/data [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+files called <a href="/docs/29.0.0/design/segments">segments</a>. Data management operations involving replacing, or deleting,
+these segments include:</p><ul><li><a href="/docs/29.0.0/data-management/update">Updates</a> to existing data.</li><li><a href="/docs/29.0.0/data-management/delete">Deletion</a> of existing data.</li><li><a href="/docs/29.0.0/data-management/schema-changes">Schema changes</a> for new and existing data.</li><li><a href="/docs/29.0.0/data-management/compaction">Compaction</a> and <a href="/docs/29.0.0/data-management/automatic-compaction">automatic compaction</a>, which reindex existing data to
+optimize storage footprint and performance.</li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/ingestion/faq"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Troubleshooting FAQ</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/data-management/update"><div class="pagination-nav__sublabel">Next< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/manual-compaction.html/index.html b/docs/29.0.0/data-management/manual-compaction.html/index.html
new file mode 100644
index 000000000..e44671525
--- /dev/null
+++ b/docs/29.0.0/data-management/manual-compaction.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/manual-compaction">
+ <link rel="canonical" href="/docs/29.0.0/data-management/manual-compaction" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/manual-compaction' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/manual-compaction/index.html b/docs/29.0.0/data-management/manual-compaction/index.html
new file mode 100644
index 000000000..daf3f08c6
--- /dev/null
+++ b/docs/29.0.0/data-management/manual-compaction/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/manual-compaction" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Manual compaction | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/da [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+If you don't specify <code>granularitySpec</code>, Druid retains the original segment and query granularities when compaction is complete.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="compaction-io-configuration">Compaction I/O configuration<a href="#compaction-io-configuration" class="hash-link" aria-label="Direct link to Compaction I/O configuration" title="Direct link to Compaction I/O configuration"></a></h2><p>The compaction <code>ioConfig</code> requires specifying < [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/schema-changes.html/index.html b/docs/29.0.0/data-management/schema-changes.html/index.html
new file mode 100644
index 000000000..6ad35a10e
--- /dev/null
+++ b/docs/29.0.0/data-management/schema-changes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/schema-changes">
+ <link rel="canonical" href="/docs/29.0.0/data-management/schema-changes" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/schema-changes' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/schema-changes/index.html b/docs/29.0.0/data-management/schema-changes/index.html
new file mode 100644
index 000000000..c51a0b22b
--- /dev/null
+++ b/docs/29.0.0/data-management/schema-changes/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/schema-changes" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Schema changes | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/data- [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+It is sufficient to update your supervisor spec, if using <a href="/docs/29.0.0/ingestion/#streaming">streaming ingestion</a>, or to
+provide the new schema the next time you do a <a href="/docs/29.0.0/ingestion/#batch">batch ingestion</a>. This is made possible by
+the fact that each <a href="/docs/29.0.0/design/segments">segment</a>, at the time it is created, stores a
+copy of its own schema. Druid reconciles all of these individual segment schemas automatically at query time.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="for-existing-data">For existing data<a href="#for-existing-data" class="hash-link" aria-label="Direct link to For existing data" title="Direct link to For existing data"></a></h2><p>Schema changes are sometimes necessary for existing data. For example, you may want to change the type of a column in
+previously-ingested data, or drop a column entirely. Druid handles this using <a href="/docs/29.0.0/data-management/update">reindexing</a>, the same method
+it uses to handle updates of existing data. Reindexing involves rewriting all affected segments and can be a
+time-consuming operation.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/data-management/delete"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Data deletion</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/data-management/compaction"><div class="pagination-nav__sublabel">Next</div><div class=" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/update.html/index.html b/docs/29.0.0/data-management/update.html/index.html
new file mode 100644
index 000000000..0248b537f
--- /dev/null
+++ b/docs/29.0.0/data-management/update.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/data-management/update">
+ <link rel="canonical" href="/docs/29.0.0/data-management/update" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/data-management/update' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/data-management/update/index.html b/docs/29.0.0/data-management/update/index.html
new file mode 100644
index 000000000..90c0886a9
--- /dev/null
+++ b/docs/29.0.0/data-management/update/index.html
@@ -0,0 +1,46 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-data-management/update" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Data updates | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/data-ma [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+overwriting existing data using time ranges. Data outside the replacement time range is not touched. Overwriting of
+existing data is done using the same mechanisms as <a href="/docs/29.0.0/ingestion/#batch">batch ingestion</a>.</p><p>For example:</p><ul><li><a href="/docs/29.0.0/ingestion/native-batch">Native batch</a> with <code>appendToExisting: false</code>, and <code>intervals</code> set to a specific
+time range, overwrites data for that time range.</li><li><a href="/docs/29.0.0/multi-stage-query/reference#replace">SQL <code>REPLACE <table> OVERWRITE [ALL | WHERE ...]</code></a> overwrites data for
+the entire table or for a specified time range.</li></ul><p>In both cases, Druid's atomic update mechanism ensures that queries will flip seamlessly from the old data to the new
+data on a time-chunk-by-time-chunk basis.</p><p>Ingestion and overwriting cannot run concurrently for the same time range of the same datasource. While an overwrite job
+is ongoing for a particular time range of a datasource, new ingestions for that time range are queued up. Ingestions for
+other time ranges proceed as normal. Read-only queries also proceed as normal, using the pre-existing version of the
+data.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p> Druid does not support [...]
+is used to perform schema changes, repartition data, filter out unwanted data, enrich existing data, and so on. This
+behaves just like any other <a href="#overwrite">overwrite</a> with regard to atomic updates and locking.</p><p>With <a href="/docs/29.0.0/ingestion/native-batch">native batch</a>, use the <a href="/docs/29.0.0/ingestion/input-sources#druid-input-source"><code>druid</code> input
+source</a>. If needed,
+<a href="/docs/29.0.0/ingestion/ingestion-spec#transformspec"><code>transformSpec</code></a> can be used to filter or modify data during the
+reindexing job.</p><p>With SQL, use <a href="/docs/29.0.0/multi-stage-query/reference#replace"><code>REPLACE <table> OVERWRITE</code></a> with <code>SELECT ... FROM <table></code>.
+(Druid does not have <code>UPDATE</code> or <code>ALTER TABLE</code> statements.) Any SQL SELECT query can be used to filter,
+modify, or enrich the data during the reindexing job.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="rolled-up-datasources">Rolled-up datasources<a href="#rolled-up-datasources" class="hash-link" aria-label="Direct link to Rolled-up datasources" title="Direct link to Rolled-up datasources"></a></h2><p>Rolled-up datasources can be effectively updated using appends, without rewrites. When you append a row that has an
+identical set of dimensions to an existing row, queries that use aggregation operators automatically combine those two
+rows together at query time.</p><p><a href="/docs/29.0.0/data-management/compaction">Compaction</a> or <a href="/docs/29.0.0/data-management/automatic-compaction">automatic compaction</a> can be used to physically combine these
+matching rows together later on, by rewriting segments in the background.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="lookups">Lookups<a href="#lookups" class="hash-link" aria-label="Direct link to Lookups" title="Direct link to Lookups"></a></h2><p>If you have a dimension where values need to be updated frequently, try first using <a href="/docs/29.0.0/querying/lookups">lookups</a>. A
+classic use case of lookups is when you have an ID dimension stored in a Druid segment, and want to map the ID dimension to a
+human-readable string that may need to be updated periodically.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/data-management/"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Overview</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/data-management/delete"><div class="pagination-nav__sublabel" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/dependencies/cassandra-deep-storage.html/index.html b/docs/29.0.0/dependencies/cassandra-deep-storage.html/index.html
new file mode 100644
index 000000000..6eede810f
--- /dev/null
+++ b/docs/29.0.0/dependencies/cassandra-deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/dependencies/zookeeper.html/index.html b/docs/29.0.0/dependencies/zookeeper.html/index.html
new file mode 100644
index 000000000..9e100091f
--- /dev/null
+++ b/docs/29.0.0/dependencies/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/29.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design.html/index.html b/docs/29.0.0/design.html/index.html
new file mode 100644
index 000000000..1117addae
--- /dev/null
+++ b/docs/29.0.0/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/">
+ <link rel="canonical" href="/docs/29.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/architecture.html/index.html b/docs/29.0.0/design/architecture.html/index.html
new file mode 100644
index 000000000..b54fc9264
--- /dev/null
+++ b/docs/29.0.0/design/architecture.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/architecture">
+ <link rel="canonical" href="/docs/29.0.0/design/architecture" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/architecture' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/architecture/index.html b/docs/29.0.0/design/architecture/index.html
new file mode 100644
index 000000000..3ef444f5b
--- /dev/null
+++ b/docs/29.0.0/design/architecture/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/architecture" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Architecture | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/design/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+for reading from external data sources and publishing new Druid segments.</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="peon-service">Peon service<a href="#peon-service" class="hash-link" aria-label="Direct link to Peon service" title="Direct link to Peon service"></a></h5><p><a href="/docs/29.0.0/design/peons"><strong>Peon</strong></a> services are task execution engines spawned by MiddleManagers. Each Peon runs a separate JVM and is responsible for executing a single task. Peo [...]
+forking separate JVM processes per-task, the Indexer runs tasks as individual threads within a single JVM process.</p><p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to better enable resource sharing across tasks. The Indexer is a newer feature and is currently designated <a href="/docs/29.0.0/development/experimental">experimental</a> due to the fact that its memory management system is still under
+development. It will continue to mature in future versions of Druid.</p><p>Typically, you would deploy either MiddleManagers or Indexers, but not both.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="colocation-of-services">Colocation of services<a href="#colocation-of-services" class="hash-link" aria-label="Direct link to Colocation of services" title="Direct link to Colocation of services"></a></h2><p>Colocating Druid services by server type generally results in better utilizati [...]
+For very large scale clusters, it can be desirable to split the Druid services such that they run on individual servers to avoid resource contention.</p><p>This section describes guidelines and configuration parameters related to service colocation.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="coordinators-and-overlords">Coordinators and Overlords<a href="#coordinators-and-overlords" class="hash-link" aria-label="Direct link to Coordinators and Overlords" title="Direct link to C [...]
+For more information, see <a href="/docs/29.0.0/configuration/#coordinator-operation">Coordinator Operation</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="historicals-and-middlemanagers">Historicals and MiddleManagers<a href="#historicals-and-middlemanagers" class="hash-link" aria-label="Direct link to Historicals and MiddleManagers" title="Direct link to Historicals and MiddleManagers"></a></h3><p>With higher levels of ingestion or query load, it can make sense to deploy th [...]
+leverage existing infrastructure, where present.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deep-storage">Deep storage<a href="#deep-storage" class="hash-link" aria-label="Direct link to Deep storage" title="Direct link to Deep storage"></a></h3><p>Druid uses deep storage to store any data that has been ingested into the system. Deep storage is shared file
+storage accessible by every Druid server. In a clustered deployment, this is typically a distributed object store like S3 or
+HDFS, or a network mounted filesystem. In a single-server deployment, this is typically local disk.</p><p>Druid uses deep storage for the following purposes:</p><ul><li>To store all the data you ingest. Segments that get loaded onto Historical services for low latency queries are also kept in deep storage for backup purposes. Additionally, segments that are only in deep storage can be used for <a href="/docs/29.0.0/querying/query-deep-storage">queries from deep storage</a>.</li><li>As a [...]
+Segments on disk for Historical services provide the low latency querying performance Druid is known for.</p><p>You can also query directly from deep storage. When you query segments that exist only in deep storage, you trade some performance for the ability to query more of your data without necessarily having to scale your Historical services.</p><p>When determining sizing for your storage, keep the following in mind:</p><ul><li>Deep storage needs to be able to hold all the data that [...]
+if every single data server is lost and re-provisioned.</p><p>For more details, please see the <a href="/docs/29.0.0/design/deep-storage">Deep storage</a> page.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage">Metadata storage<a href="#metadata-storage" class="hash-link" aria-label="Direct link to Metadata storage" title="Direct link to Metadata storage"></a></h3><p>The metadata storage holds various shared system metadata such as segment usage information and tas [...]
+clustered deployment, this is typically a traditional RDBMS like PostgreSQL or MySQL. In a single-server
+deployment, it is typically a locally-stored Apache Derby database.</p><p>For more details, please see the <a href="/docs/29.0.0/design/metadata-storage">Metadata storage</a> page.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="zookeeper">ZooKeeper<a href="#zookeeper" class="hash-link" aria-label="Direct link to ZooKeeper" title="Direct link to ZooKeeper"></a></h3><p>Used for internal service discovery, coordination, and leader election.</p><p>For more details, please see the <a [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/auth.html/index.html b/docs/29.0.0/design/auth.html/index.html
new file mode 100644
index 000000000..37aec38b9
--- /dev/null
+++ b/docs/29.0.0/design/auth.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/operations/auth">
+ <link rel="canonical" href="/docs/29.0.0/operations/auth" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/operations/auth' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/broker.html/index.html b/docs/29.0.0/design/broker.html/index.html
new file mode 100644
index 000000000..ce08bc64b
--- /dev/null
+++ b/docs/29.0.0/design/broker.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/broker">
+ <link rel="canonical" href="/docs/29.0.0/design/broker" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/broker' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/broker/index.html b/docs/29.0.0/design/broker/index.html
new file mode 100644
index 000000000..cb9a9a438
--- /dev/null
+++ b/docs/29.0.0/design/broker/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/broker" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Broker service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/desig [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Historical services. Once the Historical services return their results, the Broker will store those results in the cache. Real-time segments are never cached and hence requests for real-time data will always be forwarded to real-time services. Real-time data is perpetually changing and caching the results would be unreliable.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0. [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/concepts-and-terminology.html/index.html b/docs/29.0.0/design/concepts-and-terminology.html/index.html
new file mode 100644
index 000000000..1117addae
--- /dev/null
+++ b/docs/29.0.0/design/concepts-and-terminology.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/">
+ <link rel="canonical" href="/docs/29.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/coordinator.html/index.html b/docs/29.0.0/design/coordinator.html/index.html
new file mode 100644
index 000000000..4b856459d
--- /dev/null
+++ b/docs/29.0.0/design/coordinator.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/coordinator">
+ <link rel="canonical" href="/docs/29.0.0/design/coordinator" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/coordinator' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/coordinator/index.html b/docs/29.0.0/design/coordinator/index.html
new file mode 100644
index 000000000..5714f0a61
--- /dev/null
+++ b/docs/29.0.0/design/coordinator/index.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/coordinator" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Coordinator service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Coordinator service communicates to Historical services to load or drop segments based on configurations. The Coordinator is responsible for loading new segments, dropping outdated segments, ensuring that segments are "replicated" (that is, loaded on multiple different Historical nodes) proper (configured) number of times, and moving
+("balancing") segments between Historical nodes to keep the latter evenly loaded.</p><p>The Coordinator runs its duties periodically and the time between each run is a configurable parameter. On each
+run, the Coordinator assesses the current state of the cluster before deciding on the appropriate actions to take.
+Similar to the Broker and Historical services, the Coordinator maintains a connection to a ZooKeeper cluster for
+current cluster information. The Coordinator also maintains a connection to a database containing information about
+"used" segments (that is, the segments that <em>should</em> be loaded in the cluster) and the loading rules.</p><p>Before any unassigned segments are serviced by Historical services, the Historical services for each tier are first
+sorted in terms of capacity, with least capacity servers having the highest priority. Unassigned segments are always
+assigned to the services with least capacity to maintain a level of balance between services. The Coordinator does not
+directly communicate with a Historical service when assigning it a new segment; instead the Coordinator creates some
+temporary information about the new segment under load queue path of the Historical service. Once this request is seen,
+the Historical service loads the segment and begins servicing it.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>For Apache Druid Coordinator service configuration, see <a href="/docs/29.0.0/configuration/#coordinator">Coordinator configuration</a>.</p><p>For basic tuning guidance for the Coordinator service, see <a href [...]
+Historical nodes in the cluster. The Coordinator sends requests to Historical nodes to unload unused segments or segments
+that are removed from the database.</p><p>Segments that are overshadowed (their versions are too old and their data has been replaced by newer segments) are
+marked as unused. During the next Coordinator's run, they will be unloaded from Historical nodes in the cluster.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clean-up-non-overshadowed-eternity-tombstone-segments">Clean up non-overshadowed eternity tombstone segments<a href="#clean-up-non-overshadowed-eternity-tombstone-segments" class="hash-link" aria-label="Direct link to Clean up non-overshadowed eternity tombstone segments" title="Direct link to Clean up non-overshadowed [...]
+Each run, the Coordinator compacts segments by merging small segments or splitting a large one. This is useful when the size of your segments is not optimized which may degrade query performance.
+See <a href="/docs/29.0.0/operations/segment-optimization">Segment size optimization</a> for details.</p><p>The Coordinator first finds the segments to compact based on the <a href="#segment-search-policy-in-automatic-compaction">segment search policy</a>.
+Once some segments are found, it issues a <a href="/docs/29.0.0/ingestion/tasks#compact">compaction task</a> to compact those segments.
+The maximum number of running compaction tasks is <code>min(sum of worker capacity * slotRatio, maxSlots)</code>.
+Note that even if <code>min(sum of worker capacity * slotRatio, maxSlots) = 0</code>, at least one compaction task is always submitted
+if the compaction is enabled for a dataSource.
+See <a href="/docs/29.0.0/api-reference/automatic-compaction-api#manage-automatic-compaction">Automatic compaction configuration API</a> and <a href="/docs/29.0.0/configuration/#automatic-compaction-dynamic-configuration">Automatic compaction configuration</a> to enable and configure automatic compaction.</p><p>Compaction tasks might fail due to the following reasons:</p><ul><li>If the input segments of a compaction task are removed or overshadowed before it starts, that compaction task [...]
+need compaction.
+A set of segments needs compaction if all conditions below are satisfied:</p><ul><li>Total size of segments in the time chunk is smaller than or equal to the configured <code>inputSegmentSizeBytes</code>.</li><li>Segments have never been compacted yet or compaction spec has been updated since the last compaction: <code>maxTotalRows</code> or <code>indexSpec</code>.</li></ul><p>Here are some details with an example. Suppose we have two dataSources (<code>foo</code>, <code>bar</code>) as s [...]
+<code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION</code> and <code>foo_2017-11-01T00:00:00.000Z_2017-12-01T00:00:00.000Z_VERSION_1</code> to compact together because
+<code>2017-11-01T00:00:00.000Z/2017-12-01T00:00:00.000Z</code> is the most recent time chunk.</p><p>If the Coordinator has enough task slots for compaction, this policy will continue searching for the next segments and return
+<code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION</code> and <code>bar_2017-10-01T00:00:00.000Z_2017-11-01T00:00:00.000Z_VERSION_1</code>.
+Finally, <code>foo_2017-09-01T00:00:00.000Z_2017-10-01T00:00:00.000Z_VERSION</code> will be picked up even though there is only one segment in the time chunk of <code>2017-09-01T00:00:00.000Z/2017-10-01T00:00:00.000Z</code>.</p><p>The search start point can be changed by setting <code>skipOffsetFromLatest</code>.
+If this is set, this policy will ignore the segments falling into the time chunk of (the end time of the most recent segment - <code>skipOffsetFromLatest</code>).
+This is to avoid conflicts between compaction tasks and realtime tasks.
+Note that realtime tasks have a higher priority than compaction tasks by default. Realtime tasks will revoke the locks of compaction tasks if their intervals overlap, resulting in the termination of the compaction task.
+For more information, see <a href="/docs/29.0.0/data-management/automatic-compaction#avoid-conflicts-with-ingestion">Avoid conflicts with ingestion</a>.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 [...]
+and their total size exceeds <a href="/docs/29.0.0/configuration/#automatic-compaction-dynamic-configuration"><code>inputSegmentSizeBytes</code></a>.
+If it finds such segments, it simply skips them.</p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="faq">FAQ<a href="#faq" class="hash-link" aria-label="Direct link to FAQ" title="Direct link to FAQ"></a></h2><ol><li><p><strong>Do clients ever contact the Coordinator service?</strong></p><p>The Coordinator is not involved in a query.</p><p>Historical services never directly contact the Coordinator service. The Coordinator tells the Historical services to load/drop data vi [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/deep-storage.html/index.html b/docs/29.0.0/design/deep-storage.html/index.html
new file mode 100644
index 000000000..4b8b79c00
--- /dev/null
+++ b/docs/29.0.0/design/deep-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/deep-storage">
+ <link rel="canonical" href="/docs/29.0.0/design/deep-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/deep-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/deep-storage/index.html b/docs/29.0.0/design/deep-storage/index.html
new file mode 100644
index 000000000..3be998de2
--- /dev/null
+++ b/docs/29.0.0/design/deep-storage/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/deep-storage" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Deep storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/design/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+use cloud-based deep storage (<a href="#amazon-s3-or-s3-compatible">Amazon S3</a>, <a href="#google-cloud-storage">Google Cloud Storage</a>,
+or <a href="#azure-blob-storage">Azure Blob Storage</a>), S3-compatible storage (like Minio), or <a href="#hdfs">HDFS</a>. These options are
+generally more convenient, more scalable, and more robust than setting up a shared filesystem.</p><p>The following configurations in <code>common.runtime.properties</code> apply to local storage:</p><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th></tr></thead><tbody><tr><td><code>druid.storage.type</code></td><td><code>local</code></td><td></td><td>Must be set.</td></tr><tr><td><code>druid.storage.storageDirectory</code></td><td>any local di [...]
+<code>druid.segmentCache.infoDir</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="amazon-s3-or-s3-compatible">Amazon S3 or S3-compatible<a href="#amazon-s3-or-s3-compatible" class="hash-link" aria-label="Direct link to Amazon S3 or S3-compatible" title="Direct link to Amazon S3 or S3-compatible"></a></h3><p>See <a href="/docs/29.0.0/development/extensions-core/s3"><code>druid-s3-extensions</code></a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="google-cloud-storag [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/design.html/index.html b/docs/29.0.0/design/design.html/index.html
new file mode 100644
index 000000000..1117addae
--- /dev/null
+++ b/docs/29.0.0/design/design.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/">
+ <link rel="canonical" href="/docs/29.0.0/design/" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/extensions-contrib/dropwizard.html/index.html b/docs/29.0.0/design/extensions-contrib/dropwizard.html/index.html
new file mode 100644
index 000000000..7cdfa305e
--- /dev/null
+++ b/docs/29.0.0/design/extensions-contrib/dropwizard.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/extensions-contrib/dropwizard">
+ <link rel="canonical" href="/docs/29.0.0/design/extensions-contrib/dropwizard" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/extensions-contrib/dropwizard' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/extensions-contrib/dropwizard/index.html b/docs/29.0.0/design/extensions-contrib/dropwizard/index.html
new file mode 100644
index 000000000..18ea8ad50
--- /dev/null
+++ b/docs/29.0.0/design/extensions-contrib/dropwizard/index.html
@@ -0,0 +1,33 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/extensions-contrib/dropwizard" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Dropwizard metrics emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+It accumulates druid metrics as dropwizard metrics, and emits them to various sinks via dropwizard supported reporters.
+Currently supported dropwizard metrics types counter, gauge, meter, timer and histogram.
+These metrics can be emitted using either Console or JMX reporter. </p><p>To use this emitter, set</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.emitter=dropwizard</span><br></span></code>< [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric.
+If the user does not specify their own JSON file, a <a href="#default-metrics-mapping">default mapping</a> is used.
+All metrics are expected to be mapped. Metrics which are not mapped will be ignored.
+Dropwizard metric path is organized using the following schema:</p><p><code><druid metric name> : { "dimensions" : <dimension list>, "type" : <Dropwizard metric type>, "timeUnit" : <For timers, timeunit in which metric is emitted>}</code></p><p>e.g.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" c [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/historical.html/index.html b/docs/29.0.0/design/historical.html/index.html
new file mode 100644
index 000000000..0be0e6001
--- /dev/null
+++ b/docs/29.0.0/design/historical.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/historical">
+ <link rel="canonical" href="/docs/29.0.0/design/historical" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/historical' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/historical/index.html b/docs/29.0.0/design/historical/index.html
new file mode 100644
index 000000000..46f10cc49
--- /dev/null
+++ b/docs/29.0.0/design/historical/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/historical" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Historical service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Historical services cache data segments on local disk and serve queries from that cache as well as from an in-memory cache.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>For Apache Druid Historical service configuration, see <a href="/docs/29.0.0/configuration/#historical">Historical configuration</a>.</p><p>For basic t [...]
+For more information, see <a href="/docs/29.0.0/operations/basic-cluster-tuning#segment-cache-size">Segment cache size</a>.</p><p>The <a href="/docs/29.0.0/design/coordinator">Coordinator</a> controls the assignment of segments to Historicals and the balance of segments between Historicals. Historical services do not communicate directly with each other, nor do they communicate directly with the Coordinator. Instead, the Coordinator creates ephemeral entries in ZooKeeper in a <a href="/d [...]
+For information on querying Historical services, see <a href="/docs/29.0.0/querying/">Querying</a>.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/design/router"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Router</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/design/middlemanager"><div cla [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/index.html b/docs/29.0.0/design/index.html
new file mode 100644
index 000000000..fa68b3839
--- /dev/null
+++ b/docs/29.0.0/design/index.html
@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/index" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Introduction to Apache Druid | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/doc [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid's key features are:</p><ol><li><strong>Columnar storage format.</strong> Druid uses column-oriented storage. This means it only loads the exact columns
+needed for a particular query. This greatly improves speed for queries that retrieve only a few columns. Additionally, to support fast scans and aggregations, Druid optimizes column storage for each column according to its data type.</li><li><strong>Scalable distributed system.</strong> Typical Druid deployments span clusters ranging from tens to hundreds of servers. Druid can ingest data at the rate of millions of records per second while retaining trillions of records and maintaining [...]
+querying.</li><li><strong>Self-healing, self-balancing, easy to operate.</strong> As an operator, you add servers to scale out or
+remove servers to scale down. The Druid cluster re-balances itself automatically in the background without any downtime. If a
+Druid server fails, the system automatically routes data around the damage until the server can be replaced. Druid
+is designed to run continuously without planned downtime for any reason. This is true for configuration changes and software
+updates.</li><li><strong>Cloud-native, fault-tolerant architecture that won't lose data.</strong> After ingestion, Druid safely stores a copy of your data in <a href="/docs/29.0.0/design/architecture#deep-storage">deep storage</a>. Deep storage is typically cloud storage, HDFS, or a shared filesystem. You can recover your data from deep storage even in the unlikely case that all Druid servers fail. For a limited failure that affects only a few Druid servers, replication ensures that [...]
+<a href="https://arxiv.org/pdf/1004.0403" target="_blank" rel="noopener noreferrer">CONCISE</a> compressed bitmap indexes to create indexes to enable fast filtering and searching across multiple columns.</li><li><strong>Time-based partitioning.</strong> Druid first partitions data by time. You can optionally implement additional partitioning based upon other fields.
+Time-based queries only access the partitions that match the time range of the query which leads to significant performance improvements.</li><li><strong>Approximate algorithms.</strong> Druid includes algorithms for approximate count-distinct, approximate ranking, and
+computation of approximate histograms and quantiles. These algorithms offer bounded memory usage and are often
+substantially faster than exact computations. For situations where accuracy is more important than speed, Druid also
+offers exact count-distinct and exact ranking.</li><li><strong>Automatic summarization at ingest time.</strong> Druid optionally supports data summarization at ingestion time. This
+summarization partially pre-aggregates your data, potentially leading to significant cost savings and performance boosts.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="when-to-use-druid">When to use Druid<a href="#when-to-use-druid" class="hash-link" aria-label="Direct link to When to use Druid" title="Direct link to When to use Druid"></a></h2><p>Druid is used by many companies of various sizes for many different use cases. For more information see
+<a href="/druid-powered">Powered by Apache Druid</a>.</p><p>Druid is likely a good choice if your use case matches a few of the following:</p><ul><li>Insert rates are very high, but updates are less common.</li><li>Most of your queries are aggregation and reporting queries. For example "group by" queries. You may also have searching and
+scanning queries.</li><li>You are targeting query latencies of 100ms to a few seconds.</li><li>Your data has a time component. Druid includes optimizations and design choices specifically related to time.</li><li>You may have more than one table, but each query hits just one big distributed table. Queries may potentially hit more
+than one smaller "lookup" table.</li><li>You have high cardinality data columns, e.g. URLs, user IDs, and need fast counting and ranking over them.</li><li>You want to load data from Kafka, HDFS, flat files, or object storage like Amazon S3.</li></ul><p>Situations where you would likely <em>not</em> want to use Druid include:</p><ul><li>You need low-latency updates of <em>existing</em> records using a primary key. Druid supports streaming inserts, but not streaming updates. You [...]
+background batch jobs.</li><li>You are building an offline reporting system where query latency is not very important.</li><li>You want to do "big" joins, meaning joining one big fact table to another big fact table, and you are okay with these queries
+taking a long time to complete.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="learn-more">Learn more<a href="#learn-more" class="hash-link" aria-label="Direct link to Learn more" title="Direct link to Learn more"></a></h2><ul><li>Try the Druid <a href="/docs/29.0.0/tutorials/">Quickstart</a>.</li><li>Learn more about Druid components in <a href="/docs/29.0.0/design/architecture">Design</a>.</li><li>Read about new features and other details of <a href="https://github.com/ap [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/indexer.html/index.html b/docs/29.0.0/design/indexer.html/index.html
new file mode 100644
index 000000000..0cf769953
--- /dev/null
+++ b/docs/29.0.0/design/indexer.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/indexer">
+ <link rel="canonical" href="/docs/29.0.0/design/indexer" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/indexer' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/indexer/index.html b/docs/29.0.0/design/indexer/index.html
new file mode 100644
index 000000000..423b2376a
--- /dev/null
+++ b/docs/29.0.0/design/indexer/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/indexer" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Indexer service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/desi [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Its memory management system is still under development and will be significantly enhanced in later releases.</p></div></div><p>The Apache Druid Indexer service is an alternative to the MiddleManager + Peon task execution system. Instead of forking a separate JVM process per-task, the Indexer runs tasks as separate threads within a single JVM process.</p><p>The Indexer is designed to be easier to configure and deploy compared to the MiddleManager + Peon system and to better enable resour [...]
+One pool is exclusively used for task control messages between the Overlord and the Indexer ("chat handler threads"). The other pool is used for handling all other HTTP requests.</p><p>To configure the number of threads, use the <code>druid.server.http.numThreads</code> property. For example, if <code>druid.server.http.numThreads</code> is set to 10, there will be 10 chat handler threads and 10 non-chat handler threads.</p><p>In addition to these two pools, the Indexer allocate [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/indexing-service.html/index.html b/docs/29.0.0/design/indexing-service.html/index.html
new file mode 100644
index 000000000..a98612e92
--- /dev/null
+++ b/docs/29.0.0/design/indexing-service.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/indexing-service">
+ <link rel="canonical" href="/docs/29.0.0/design/indexing-service" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/indexing-service' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/indexing-service/index.html b/docs/29.0.0/design/indexing-service/index.html
new file mode 100644
index 000000000..38e5c3099
--- /dev/null
+++ b/docs/29.0.0/design/indexing-service/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/indexing-service" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Indexing Service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Overlords and MiddleManagers may run on the same process or across multiple processes, while MiddleManagers and Peons always run on the same process.</p><p>Tasks are managed using API endpoints on the Overlord service. Please see <a href="/docs/29.0.0/api-reference/tasks-api">Tasks API</a> for more information.</p><p><img loading="lazy" alt="Indexing Service" src="/assets/images/indexing_service-e985270b9e0e342af71c0673407e5673.png" title="Indexing Service" width="532" height="621" class [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/metadata-storage.html/index.html b/docs/29.0.0/design/metadata-storage.html/index.html
new file mode 100644
index 000000000..0dec30e90
--- /dev/null
+++ b/docs/29.0.0/design/metadata-storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/metadata-storage">
+ <link rel="canonical" href="/docs/29.0.0/design/metadata-storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/metadata-storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/metadata-storage/index.html b/docs/29.0.0/design/metadata-storage/index.html
new file mode 100644
index 000000000..9446b2dff
--- /dev/null
+++ b/docs/29.0.0/design/metadata-storage/index.html
@@ -0,0 +1,50 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/metadata-storage" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Metadata storage | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid uses the metadata store to house various metadata about the system, but not to store the actual data.
+The metadata store retains all metadata essential for a Druid cluster to work.</p><p>The metadata store includes the following:</p><ul><li>Segments records</li><li>Rule records</li><li>Configuration records</li><li>Task-related tables</li><li>Audit records</li></ul><p>Derby is the default metadata store for Druid, however, it is not suitable for production.
+<a href="/docs/29.0.0/development/extensions-core/mysql">MySQL</a> and <a href="/docs/29.0.0/development/extensions-core/postgresql">PostgreSQL</a> are more production suitable metadata stores.
+See <a href="/docs/29.0.0/configuration/#metadata-storage">Metadata storage configuration</a> for the default configuration settings.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14- [...]
+See the database-specific docs for guidance on versions.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mysql">MySQL<a href="#mysql" class="hash-link" aria-label="Direct link to MySQL" title="Direct link to MySQL"></a></h3><p>See <a href="/docs/29.0.0/development/extensions-core/mysql">mysql-metadata-storage extension documentation</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="postgresql">PostgreSQL<a href="#postgresql" class="hash-link" aria-label="Direct link to Po [...]
+Define these properties with a <code>druid.metadata.storage.connector.dbcp.</code> prefix.
+For example:</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.metadata.storage.connector.dbcp.maxConnLifetimeMillis=1200000</span><br></span><span class="token-line" [...]
+"used segments" elsewhere in the documentation and throughout the project.) The table is polled by the
+<a href="/docs/29.0.0/design/coordinator">Coordinator</a> to determine the set of segments that should be available for querying in the
+system. The table has two main functional columns, the other columns are for indexing purposes.</p><p>Value 1 in the <code>used</code> column means that the segment should be "used" by the cluster (i.e., it should be loaded and
+available for requests). Value 0 means that the segment should not be loaded into the cluster. We do this as a means of
+unloading segments from the cluster without actually removing their metadata (which allows for simpler rolling back if
+that is ever an issue). The <code>used</code> column has a corresponding <code>used_status_last_updated</code> column which denotes the time
+when the <code>used</code> status of the segment was last updated. This information can be used by the Coordinator to determine if
+a segment is a candidate for deletion (if automated segment killing is enabled).</p><p>The <code>payload</code> column stores a JSON blob that has all of the metadata for the segment.
+Some of the data in the <code>payload</code> column intentionally duplicates data from other columns in the segments table.
+As an example, the <code>payload</code> column may take the following form:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class= [...]
+land. These rules are used by the <a href="/docs/29.0.0/design/coordinator">Coordinator</a>
+when making segment (re-)allocation decisions about the cluster.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="config-table">Config table<a href="#config-table" class="hash-link" aria-label="Direct link to Config table" title="Direct link to Config table"></a></h3><p>The config table stores runtime configuration objects. We do not have
+many of these yet and we are not sure if we will keep this mechanism going
+forward, but it is the beginnings of a method of changing some configuration
+parameters across the cluster at runtime.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="task-related-tables">Task-related tables<a href="#task-related-tables" class="hash-link" aria-label="Direct link to Task-related tables" title="Direct link to Task-related tables"></a></h3><p>Task-related tables are created and used by the <a href="/docs/29.0.0/design/overlord">Overlord</a> and <a href="/docs/29.0.0/design/middlemanager">MiddleManager</a> when managing tasks.</p><h3 class="an [...]
+such as rule changes done by <a href="/docs/29.0.0/design/coordinator">Coordinator</a> and other
+config changes.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="metadata-storage-access">Metadata storage access<a href="#metadata-storage-access" class="hash-link" aria-label="Direct link to Metadata storage access" title="Direct link to Metadata storage access"></a></h2><p>Only the following processes access the metadata storage:</p><ol><li>Indexing service processes (if any)</li><li>Realtime processes (if any)</li><li>Coordinator processes</li></ol><p>Thus you need to give perm [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/middlemanager.html/index.html b/docs/29.0.0/design/middlemanager.html/index.html
new file mode 100644
index 000000000..5d3241c8a
--- /dev/null
+++ b/docs/29.0.0/design/middlemanager.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/middlemanager">
+ <link rel="canonical" href="/docs/29.0.0/design/middlemanager" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/middlemanager' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/middlemanager/index.html b/docs/29.0.0/design/middlemanager/index.html
new file mode 100644
index 000000000..69dc12fbe
--- /dev/null
+++ b/docs/29.0.0/design/middlemanager/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/middlemanager" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">MiddleManager service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Druid uses separate JVMs for tasks to isolate resources and logs. Each Peon is capable of running only one task at a time, wheres a MiddleManager may have multiple Peons.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>For Apache Druid MiddleManager service configuration, see <a href="/docs/29.0.0/configuration/#middleman [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/overlord.html/index.html b/docs/29.0.0/design/overlord.html/index.html
new file mode 100644
index 000000000..e04605d24
--- /dev/null
+++ b/docs/29.0.0/design/overlord.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/overlord">
+ <link rel="canonical" href="/docs/29.0.0/design/overlord" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/overlord' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/overlord/index.html b/docs/29.0.0/design/overlord/index.html
new file mode 100644
index 000000000..9ccd3ab8e
--- /dev/null
+++ b/docs/29.0.0/design/overlord/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/overlord" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Overlord service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+In local mode, the Overlord is also responsible for creating Peons for executing tasks. When running the Overlord in local mode, all MiddleManager and Peon configurations must be provided as well.
+Local mode is typically used for simple workflows. In remote mode, the Overlord and MiddleManager are run in separate services and you can run each on a different server.
+This mode is recommended if you intend to use the indexing service as the single endpoint for all Druid indexing.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>For Apache Druid Overlord service configuration, see <a href="/docs/29.0.0/configuration/#overlord">Overlord Configuration</a>.</p><p>For basic tuning guidance f [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/peons.html/index.html b/docs/29.0.0/design/peons.html/index.html
new file mode 100644
index 000000000..0941033e5
--- /dev/null
+++ b/docs/29.0.0/design/peons.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/peons">
+ <link rel="canonical" href="/docs/29.0.0/design/peons" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/peons' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/peons/index.html b/docs/29.0.0/design/peons/index.html
new file mode 100644
index 000000000..2c81760fe
--- /dev/null
+++ b/docs/29.0.0/design/peons/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/peons" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Peon service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/design/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Peons should rarely run on their own.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="running">Running<a href="#running" class="hash-link" aria-label="Direct link to Running" title="Direct link to Running"></a></h2><p>The Peon should seldom run separately from the MiddleManager, except for development purposes.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" [...]
+The status file indicates where the task status will be output.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/design/middlemanager"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">MiddleManager</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/design/indexer"><div class="pagination-nav__sublabel [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/plumber.html/index.html b/docs/29.0.0/design/plumber.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/design/plumber.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/processes.html/index.html b/docs/29.0.0/design/processes.html/index.html
new file mode 100644
index 000000000..b54fc9264
--- /dev/null
+++ b/docs/29.0.0/design/processes.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/architecture">
+ <link rel="canonical" href="/docs/29.0.0/design/architecture" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/architecture' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/realtime.html/index.html b/docs/29.0.0/design/realtime.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/design/realtime.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/router.html/index.html b/docs/29.0.0/design/router.html/index.html
new file mode 100644
index 000000000..3946aab7f
--- /dev/null
+++ b/docs/29.0.0/design/router.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/router">
+ <link rel="canonical" href="/docs/29.0.0/design/router" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/router' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/router/index.html b/docs/29.0.0/design/router/index.html
new file mode 100644
index 000000000..35a495294
--- /dev/null
+++ b/docs/29.0.0/design/router/index.html
@@ -0,0 +1,43 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/router" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Router service | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/desig [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+setting up a highly available cluster in situations where the HTTP redirect mechanism of the inactive to active
+Coordinator or Overlord service does not function correctly, such as when servers are behind a load balancer or the hostname used in the redirect is only resolvable internally.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="enable-the-management-proxy">Enable the management proxy<a href="#enable-the-management-proxy" class="hash-link" aria-label="Direct link to Enable the management proxy" title="Direct link to Enable the management proxy"></a></h3><p>To enable the management pro [...]
+determined from the original request path based on Druid API path conventions. For the Coordinator the convention is
+<code>/druid/coordinator/*</code> and for the Overlord the convention is <code>/druid/indexer/*</code>. These are convenient because they mean
+that using the management proxy does not require modifying the API request other than issuing the request to the Router
+instead of the Coordinator or Overlord. Most Druid API requests can be routed implicitly.</p><p>Explicit routes are those where the request to the Router contains a path prefix indicating which service the request
+should be routed to. For the Coordinator this prefix is <code>/proxy/coordinator</code> and for the Overlord it is <code>/proxy/overlord</code>.
+This is required for API calls with an ambiguous destination. For example, the <code>/status</code> API is present on all Druid
+services, so explicit routing needs to be used to indicate the proxy destination.</p><p>This is summarized in the table below:</p><table><thead><tr><th>Request Route</th><th>Destination</th><th>Rewritten Route</th><th>Example</th></tr></thead><tbody><tr><td><code>/druid/coordinator/*</code></td><td>Coordinator</td><td><code>/druid/coordinator/*</code></td><td><code>router:8888/druid/coordinator/v1/datasources</code> -> <code>coordinator:8081/druid/coordinator/v1/datasources</code></td [...]
+This strategy can route both native and SQL queries.</p><p>The following example strategy routes queries to the Broker <code>druid:broker-hot</code> if no valid <code>brokerService</code> is found in the query context.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockL [...]
+given SQL query is resolved using only the provided Router strategies. If not resolved using any of the strategies, the
+Router uses the <code>defaultBrokerServiceName</code>. This behavior is slightly different from native queries where the Router
+first tries to resolve the Broker service using strategies, then load rules and finally using the <code>defaultBrokerServiceName</code>
+if still not resolved. When <code>druid.router.sql.enable</code> is set to <code>false</code> (default value), the Router uses the
+<code>defaultBrokerServiceName</code>.</p><p>Setting <code>druid.router.sql.enable</code> does not affect either Avatica JDBC requests or native queries.
+Druid always routes native queries using the strategies and load rules as documented.
+Druid always routes Avatica JDBC requests based on connection ID.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="avatica-query-balancing">Avatica query balancing<a href="#avatica-query-balancing" class="hash-link" aria-label="Direct link to Avatica query balancing" title="Direct link to Avatica query balancing"></a></h2><p>All Avatica JDBC requests with a given connection ID must be routed to the same Broker, since Druid Brokers do not share connection state with each other.</p>< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/segments.html/index.html b/docs/29.0.0/design/segments.html/index.html
new file mode 100644
index 000000000..0f8077ed1
--- /dev/null
+++ b/docs/29.0.0/design/segments.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/segments">
+ <link rel="canonical" href="/docs/29.0.0/design/segments" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/segments' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/segments/index.html b/docs/29.0.0/design/segments/index.html
new file mode 100644
index 000000000..6687c3852
--- /dev/null
+++ b/docs/29.0.0/design/segments/index.html
@@ -0,0 +1,42 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/segments" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Segments | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/design/segm [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+file size to be within the recommended range of 300-700 MB. If your
+segment files are larger than this range, then consider either
+changing the granularity of the segment time interval or partitioning your
+data and/or adjusting the <code>targetRowsPerSegment</code> in your <code>partitionsSpec</code>.
+A good starting point for this parameter is 5 million rows.
+See the Sharding section below and the "Partitioning specification" section of
+the <a href="/docs/29.0.0/ingestion/hadoop#partitionsspec">Batch ingestion</a> documentation
+for more guidance.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="segment-file-structure">Segment file structure<a href="#segment-file-structure" class="hash-link" aria-label="Direct link to Segment file structure" title="Direct link to Segment file structure"></a></h2><p>Segment files are <em>columnar</em>: the data for each column is laid out in
+separate data structures. By storing each column separately, Druid decreases query latency by scanning only those columns actually needed for a query. There are three basic column types: timestamp, dimensions, and metrics:</p><p><img loading="lazy" alt="Druid column types" src="/assets/images/druid-column-types-0cd9a011b4cc2b4d05f93b3b31a7e735.png" title="Druid Column Types" width="1936" height="400" class="img_ev3q"></p><p>Timestamp and metrics type columns are arrays of integer or floa [...]
+<a href="https://github.com/lz4/lz4-java" target="_blank" rel="noopener noreferrer">LZ4</a>. Once a query identifies which rows to select, it decompresses them, pulls out the relevant rows, and applies the
+desired aggregation operator. If a query doesn’t require a column, Druid skips over that column's data.</p><p>Dimension columns are different because they support filter and
+group-by operations, so each dimension requires the following
+three data structures:</p><ul><li><strong>Dictionary</strong>: Maps values (which are always treated as strings) to integer IDs, allowing compact representation of the list and bitmap values.</li><li><strong>List</strong>: The column’s values, encoded using the dictionary. Required for GroupBy and TopN queries. These operators allow queries that solely aggregate metrics based on filters to run without accessing the list of values.</li><li><strong>Bitmap</strong>: One bitmap for each dist [...]
+bitmap. If a row has more than one value for a column, its entry in
+the list is an array of values. Additionally, a row with <em>n</em> values in the list has <em>n</em> non-zero valued entries in bitmaps.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="compression">Compression<a href="#compression" class="hash-link" aria-label="Direct link to Compression" title="Direct link to Compression"></a></h2><p>Druid uses LZ4 by default to compress blocks of values for string, long, float, and double columns. Druid uses Roaring to compress bitmaps for stri [...]
+Smoosh files contain the following: </p><ul><li>Individual files for each column in the data, including one for the <code>__time</code> column that refers to the timestamp of the segment. </li><li>An <code>index.drd</code> file that contains additional segment metadata.</li></ul></li></ul><p>In the codebase, segments have an internal format version. The current segment format version is <code>v9</code>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="implications-of-updating-segmen [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/storage.html/index.html b/docs/29.0.0/design/storage.html/index.html
new file mode 100644
index 000000000..e3c43fe1e
--- /dev/null
+++ b/docs/29.0.0/design/storage.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/storage">
+ <link rel="canonical" href="/docs/29.0.0/design/storage" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/storage' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/storage/index.html b/docs/29.0.0/design/storage/index.html
new file mode 100644
index 000000000..a6fb07548
--- /dev/null
+++ b/docs/29.0.0/design/storage/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/storage" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Storage overview | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/des [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+a task that is overwriting (like a Hadoop task, or an index task not in append mode) this is done by locking an interval and creating a new version number and new set of segments.</li><li>If the indexing task is a realtime task (like a Kafka task) then the segment is immediately queryable at this point. It's available, but unpublished.</li><li>When the indexing task has finished reading data for the segment, it pushes it to deep storage and then publishes it by writing a record into [...]
+<code>2018-05-21T16:00:00.000Z/2018-05-21T17:00:00.000Z</code>, version <code>2018-05-21T15:56:09.909Z</code>, and partition number 1:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">clarity-cloud0 [...]
+available before they are published, since they are only published when the segment is complete and will not accept any additional rows of data.</li><li><strong>Deep storage:</strong> Segment data files are pushed to deep storage once a segment is done being constructed. This happens immediately before publishing metadata to the metadata store.</li><li><strong>Availability for querying:</strong> Segments are available for querying on some Druid data server, like a realtime task, directly [...]
+<a href="/docs/29.0.0/querying/sql-metadata-tables#segments-table"><code>sys.segments</code> table</a>. It includes the following flags:</p><ul><li><code>is_published</code>: True if segment metadata has been published to the metadata store and <code>used</code> is true.</li><li><code>is_available</code>: True if the segment is currently available for querying, either on a realtime task or Historical service.</li><li><code>is_realtime</code>: True if the segment is only available on real [...]
+<a href="#indexing-and-handoff">Indexing and handoff</a>. This means that when understanding Druid's availability and consistency properties, we must look at each function separately.</p><p>On the ingestion side, Druid's primary <a href="/docs/29.0.0/ingestion/#ingestion-methods">ingestion methods</a> are all pull-based and offer transactional guarantees. This means that you are guaranteed that ingestion using these methods will publish in an all-or-nothing manner:</p><ul><li>S [...]
+discarded, and Druid will resume ingestion from the last committed set of stream offsets. This ensures exactly-once publishing behavior.</li><li><a href="/docs/29.0.0/ingestion/hadoop">Hadoop-based batch ingestion</a>. Each task publishes all segment metadata in a single transaction.</li><li><a href="/docs/29.0.0/ingestion/native-batch">Native batch ingestion</a>. In parallel mode, the supervisor task publishes all segment metadata in a single transaction after the subtasks are finished. [...]
+<a href="/docs/29.0.0/ingestion/native-batch"><code>appendToExisting</code></a> is true, or one of your input sources is the same Druid datasource that you are ingesting into. In either of these two cases, running the same task twice is non-idempotent, because you are adding to existing data instead of overwriting it.</li></ul><p>On the query side, the Druid Broker is responsible for ensuring that a consistent set of segments is involved in a given query. It selects the appropriate set o [...]
+This is used for Hadoop-based batch ingestion, native batch ingestion when <code>appendToExisting</code> is false, and compaction.</p><p>Note that atomic replacement happens for each time chunk individually. If a batch ingestion task or compaction involves multiple time chunks, then each time chunk will undergo atomic replacement soon after the task finishes, but the replacements will not all happen simultaneously.</p><p>Typically, atomic replacement in Druid is based on a core set conce [...]
+When a time chunk is overwritten, a new core set of segments is created with a higher version number. The core set must all be available before the Broker will use them instead of the older set. There can also only be one core set per version per time chunk. Druid will also only use a single version at a time per time chunk. Together, these properties provide Druid's atomic replacement guarantees.</p><p>Druid also supports an experimental segment locking mode that is activated by setting
+<a href="/docs/29.0.0/ingestion/tasks#context"><code>forceTimeChunkLock</code></a> to false in the context of an ingestion task. In this case, Druid creates an atomic update group using the existing version for the time chunk, instead of creating a new core set with a new version number. There can be multiple atomic update groups with the same version number per time chunk. Each one replaces a specific set of earlier segments in the same time chunk and with the same version number. Druid [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/zookeeper.html/index.html b/docs/29.0.0/design/zookeeper.html/index.html
new file mode 100644
index 000000000..9e100091f
--- /dev/null
+++ b/docs/29.0.0/design/zookeeper.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/design/zookeeper">
+ <link rel="canonical" href="/docs/29.0.0/design/zookeeper" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/design/zookeeper' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/design/zookeeper/index.html b/docs/29.0.0/design/zookeeper/index.html
new file mode 100644
index 000000000..23de69455
--- /dev/null
+++ b/docs/29.0.0/design/zookeeper/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-design/zookeeper" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">ZooKeeper | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/design/zoo [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/approximate-histograms.html/index.html b/docs/29.0.0/development/approximate-histograms.html/index.html
new file mode 100644
index 000000000..4fda55c23
--- /dev/null
+++ b/docs/29.0.0/development/approximate-histograms.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/approximate-histograms">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/approximate-histograms" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/approximate-histograms' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/build.html/index.html b/docs/29.0.0/development/build.html/index.html
new file mode 100644
index 000000000..b7292bc95
--- /dev/null
+++ b/docs/29.0.0/development/build.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/build">
+ <link rel="canonical" href="/docs/29.0.0/development/build" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/build' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/build/index.html b/docs/29.0.0/development/build/index.html
index 6c7d687e2..4fc9c408b 100644
--- a/docs/29.0.0/development/build/index.html
+++ b/docs/29.0.0/development/build/index.html
@@ -14,8 +14,8 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
-<link rel="preload" href="/assets/js/runtime~main.63d85568.js" as="script">
-<link rel="preload" href="/assets/js/main.7181d856.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
@@ -24,7 +24,7 @@ that matches the version you want to build.
For building the latest code in master, follow the latest version of this page
<a href="https://github.com/apache/druid/blob/master/docs/development/build.md" target="_blank" rel="noopener noreferrer">here</a>:
make sure it has <code>/master/</code> in the URL.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites"></a></h4><h5 class="anchor anchorWithStickyNavbar_LWe7" id="installing-java-and-maven">Installing Java and Maven<a href="#installing-java-and-maven" class="hash-link" aria-label="Direct link to Installing Java and Maven" title="Direct l [...]
-<script src="/assets/js/runtime~main.63d85568.js"></script>
-<script src="/assets/js/main.7181d856.js"></script>
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
</body>
</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/azure.html/index.html b/docs/29.0.0/development/community-extensions/azure.html/index.html
new file mode 100644
index 000000000..0af48b70a
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/azure.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/azure">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/azure" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/azure' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/cassandra.html/index.html b/docs/29.0.0/development/community-extensions/cassandra.html/index.html
new file mode 100644
index 000000000..6eede810f
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/cassandra.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/cloudfiles.html/index.html b/docs/29.0.0/development/community-extensions/cloudfiles.html/index.html
new file mode 100644
index 000000000..4ecc73ab0
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/cloudfiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/cloudfiles">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/cloudfiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/cloudfiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/graphite.html/index.html b/docs/29.0.0/development/community-extensions/graphite.html/index.html
new file mode 100644
index 000000000..1cd82493d
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/graphite.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/graphite">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/graphite" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/graphite' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/kafka-simple.html/index.html b/docs/29.0.0/development/community-extensions/kafka-simple.html/index.html
new file mode 100644
index 000000000..bc2c6a4b4
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/kafka-simple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/kafka-ingestion">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/community-extensions/rabbitmq.html/index.html b/docs/29.0.0/development/community-extensions/rabbitmq.html/index.html
new file mode 100644
index 000000000..bc2c6a4b4
--- /dev/null
+++ b/docs/29.0.0/development/community-extensions/rabbitmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/kafka-ingestion">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/kafka-ingestion" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/kafka-ingestion' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/contribute-to-docs.html/index.html b/docs/29.0.0/development/contribute-to-docs.html/index.html
new file mode 100644
index 000000000..eafb20fbb
--- /dev/null
+++ b/docs/29.0.0/development/contribute-to-docs.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/contribute-to-docs">
+ <link rel="canonical" href="/docs/29.0.0/development/contribute-to-docs" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/contribute-to-docs' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/contribute-to-docs/index.html b/docs/29.0.0/development/contribute-to-docs/index.html
new file mode 100644
index 000000000..d1e4ac86d
--- /dev/null
+++ b/docs/29.0.0/development/contribute-to-docs/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/contribute-to-docs" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Contribute to Druid docs | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="https://druid.apache.org/docs/latest/design/index.html" target="_blank" rel="noopener noreferrer">https://druid.apache.org/docs/latest/design/index.html</a></p><p>If you need to update a Druid doc, locate and update the doc in the Druid repo following the instructions below.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="druid-repo-branches">Druid repo branches<a href="#druid-repo-branches" class="hash-link" aria-label="Direct link to Druid repo branches" title="Direct li [...]
+For the majority of style considerations, the Apache Druid documentation follows the <a href="https://developers.google.com/style" target="_blank" rel="noopener noreferrer">Google Developer Documentation Style Guide</a>.
+The style guide should serve as a point of reference to enable contributors and reviewers to maintain documentation quality.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="notable-style-exceptions">Notable style exceptions<a href="#notable-style-exceptions" class="hash-link" aria-label="Direct link to Notable style exceptions" title="Direct link to Notable style exceptions"></a></h3><p>In some cases, Google Style might make the Druid docs more difficult to read and understand. Th [...]
+Some code editors may format tables by default.
+See the developer <a href="https://github.com/apache/druid/blob/master/dev/style-conventions.md" target="_blank" rel="noopener noreferrer">style guide</a> for more information.</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-. [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/experimental.html/index.html b/docs/29.0.0/development/experimental.html/index.html
new file mode 100644
index 000000000..170192560
--- /dev/null
+++ b/docs/29.0.0/development/experimental.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/experimental">
+ <link rel="canonical" href="/docs/29.0.0/development/experimental" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/experimental' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/experimental/index.html b/docs/29.0.0/development/experimental/index.html
new file mode 100644
index 000000000..d39dc30bd
--- /dev/null
+++ b/docs/29.0.0/development/experimental/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/experimental" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Experimental features | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This can mean any of the following things:</p><ol><li>The feature's API may change even in minor releases or patch releases.</li><li>The feature may have known "missing" pieces that will be added later.</li><li>The feature may or may not have received full battle-testing in production environments.</li></ol><p>All experimental features are optional.</p><p>Note that not all of these points apply to every experimental feature. Some have been battle-tested in terms of
+implementation, but are still marked experimental due to an evolving API. Please check the documentation for each
+feature for full details.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/29.0.0/development/contribute-to-docs"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Contribute to Druid docs</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/29.0.0/misc/papers-and-talks"><div class="pagination-nav__sublabel">Next</di [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/aliyun-oss.html/index.html b/docs/29.0.0/development/extensions-contrib/aliyun-oss.html/index.html
new file mode 100644
index 000000000..7b283eaf4
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/aliyun-oss.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/aliyun-oss">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/aliyun-oss" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/aliyun-oss' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/aliyun-oss/index.html b/docs/29.0.0/development/extensions-contrib/aliyun-oss/index.html
new file mode 100644
index 000000000..39c8f9e8b
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/aliyun-oss/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/aliyun-oss" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Aliyun OSS | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/developme [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+This document describes how to use OSS as Druid deep storage.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="installation">Installation<a href="#installation" class="hash-link" aria-label="Direct link to Installation" title="Direct link to Installation"></a></h2><p>Use the <a href="/docs/29.0.0/operations/pull-deps">pull-deps</a> tool shipped with Druid to install the <code>aliyun-oss-extensions</code> extension, as described <a href="/docs/29.0.0/configuration/extensions#communi [...]
+To do this, add following configurations:</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td><code>druid.indexer.logs.type</code></td><td>Global deep storage provider. Must be set to <code>oss</code> to make use of this extension.</td><td>yes</td></tr><tr><td><code>druid.indexer.logs.oss.bucket</code></td><td>The bucket used to keep logs. It could be the same as <code>druid.storage.oss.bucket</code></td><td>yes</td></tr><tr><td><code>dr [...]
+In this case, the <code>uris</code> property of the OSS's input source can be used for reading, as shown:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(1 [...]
+Please refer to the official <a href="https://www.alibabacloud.com/help/doc-detail/42777.htm" target="_blank" rel="noopener noreferrer">OSS permission troubleshooting document</a> to find a solution.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installation" cl [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html b/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html
new file mode 100644
index 000000000..fe883ef80
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html b/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html
new file mode 100644
index 000000000..a8de318d7
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/ambari-metrics-emitter/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/ambari-metrics-emitter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Ambari Metrics Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+ambari-metrics metric path is organized using the following schema:
+<code><namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name></code>
+Properly naming the metrics is critical to avoid conflicts, confusing data and potentially wrong interpretation later on.</p><p>Example <code>druid.historical.hist-host1:8080.MyDataSourceName.GroupBy.query/time</code>:</p><ul><li><code>druid</code> -> namespace prefix</li><li><code>historical</code> -> service name</li><li><code>hist-host1:8080</code> -> druid hostname</li><li><code>MyDataSourceName</code> -> dimension value</li><li><code>GroupBy</code> -> dimension value< [...]
+The path will be in the form <code><namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric></code>
+User has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code></p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-b [...]
+Same as for the <code>all</code> converter user has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code>
+White-list based converter comes with the following default white list map located under resources in <code>./src/main/resources/defaultWhiteListMap.json</code></p><p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
+This property is a String containing the path for the file containing <strong>white list map JSON object</strong>.
+For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/cassandra.html/index.html b/docs/29.0.0/development/extensions-contrib/cassandra.html/index.html
new file mode 100644
index 000000000..6eede810f
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/cassandra.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/cassandra">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/cassandra" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/cassandra' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/cassandra/index.html b/docs/29.0.0/development/extensions-contrib/cassandra/index.html
new file mode 100644
index 000000000..666eda103
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/cassandra/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/cassandra" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Apache Cassandra | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+be leveraged for deep storage. This requires some additional Druid configuration as well as setting up the necessary
+schema within a Cassandra keystore.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="margin-bottom--sm"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--light_HNdA footer__logo"><img src="/img/favicon.png" class="themedImage_ToTc themedImage--dark_i4oU footer__logo"></div> [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/cloudfiles.html/index.html b/docs/29.0.0/development/extensions-contrib/cloudfiles.html/index.html
new file mode 100644
index 000000000..4ecc73ab0
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/cloudfiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/cloudfiles">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/cloudfiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/cloudfiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/cloudfiles/index.html b/docs/29.0.0/development/extensions-contrib/cloudfiles/index.html
new file mode 100644
index 000000000..71467feea
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/cloudfiles/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/cloudfiles" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Rackspace Cloud Files | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0. [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Since each split represents an object in this firehose, each worker task of <code>index_parallel</code> will read an object.</p><p>Sample spec:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="toke [...]
+shardSpecs are not specified, and, in this case, caching can be useful. Prefetching is preferred when direct scan of objects is slow.</p><table><thead><tr><th>property</th><th>description</th><th>default</th><th>required?</th></tr></thead><tbody><tr><td>type</td><td>This should be <code>static-cloudfiles</code>.</td><td>N/A</td><td>yes</td></tr><tr><td>blobs</td><td>JSON array of Cloud Files blobs.</td><td>N/A</td><td>yes</td></tr><tr><td>maxCacheCapacityBytes</td><td>Maximum size of the [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html b/docs/29.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html
new file mode 100644
index 000000000..ec251eff3
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/compressed-big-decimal.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/compressed-big-decimal">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/compressed-big-decimal" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/compressed-big-decimal' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/compressed-big-decimal/index.html b/docs/29.0.0/development/extensions-contrib/compressed-big-decimal/index.html
new file mode 100644
index 000000000..1e28c5615
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/compressed-big-decimal/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/compressed-big-decimal" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Compressed Big Decimal | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles.html/index.html b/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles.html/index.html
new file mode 100644
index 000000000..0d8d6e796
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles/index.html b/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles/index.html
new file mode 100644
index 000000000..34e8ab153
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/ddsketch-quantiles/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/ddsketch-quantiles" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">DDSketches for Approximate Quantiles module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/delta-lake.html/index.html b/docs/29.0.0/development/extensions-contrib/delta-lake.html/index.html
new file mode 100644
index 000000000..5a1a501d6
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/delta-lake.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/delta-lake">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/delta-lake" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/delta-lake' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/delta-lake/index.html b/docs/29.0.0/development/extensions-contrib/delta-lake/index.html
new file mode 100644
index 000000000..c84a5e02c
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/delta-lake/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/delta-lake" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Delta Lake extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Lakehouse architecture with various compute engines. <a href="/docs/29.0.0/ingestion/input-sources#delta-lake-input-source">DeltaLakeInputSource</a> lets
+you ingest data stored in a Delta Lake table into Apache Druid. To use the Delta Lake extension, add the <code>druid-deltalake-extensions</code> to the list of loaded extensions.
+See <a href="/docs/29.0.0/configuration/extensions#loading-extensions">Loading extensions</a> for more information.</p><p>The Delta input source reads the configured Delta Lake table and extracts all the underlying delta files in the table's latest snapshot.
+These Delta Lake files are versioned Parquet files.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="version-support">Version support<a href="#version-support" class="hash-link" aria-label="Direct link to Version support" title="Direct link to Version support"></a></h2><p>The Delta Lake extension uses the Delta Kernel introduced in Delta Lake 3.0.0, which is compatible with Apache Spark 3.5.x.
+Older versions are unsupported, so consider upgrading to Delta Lake 3.0.x or higher to use this extension.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloading-delta-lake-extension">Downloading Delta Lake extension<a href="#downloading-delta-lake-extension" class="hash-link" aria-label="Direct link to Downloading Delta Lake extension" title="Direct link to Downloading Delta Lake extension"></a></h2><p>To download <code>druid-deltalake-extensions</code>, run the following co [...]
+Druid version:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span> [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/distinctcount.html/index.html b/docs/29.0.0/development/extensions-contrib/distinctcount.html/index.html
new file mode 100644
index 000000000..12de17397
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/distinctcount.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/distinctcount">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/distinctcount" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/distinctcount' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/distinctcount/index.html b/docs/29.0.0/development/extensions-contrib/distinctcount/index.html
new file mode 100644
index 000000000..fe9ebcbc0
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/distinctcount/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/distinctcount" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">DistinctCount Aggregator | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/gce-extensions.html/index.html b/docs/29.0.0/development/extensions-contrib/gce-extensions.html/index.html
new file mode 100644
index 000000000..97d5a7e98
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/gce-extensions.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/gce-extensions">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/gce-extensions" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/gce-extensions' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/gce-extensions/index.html b/docs/29.0.0/development/extensions-contrib/gce-extensions/index.html
new file mode 100644
index 000000000..8f3bd1b14
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/gce-extensions/index.html
@@ -0,0 +1,38 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/gce-extensions" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">GCE Extensions | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/devel [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+of GCE (MIG from now on). This choice has been made to ease the configuration of the machines and simplify their
+management.</p><p>For this reason, in order to use this extension, the user must have created</p><ol><li>An instance template with the right machine type and image to bu used to run the MiddleManager</li><li>A MIG that has been configured to use the instance template created in the point above</li></ol><p>Moreover, in order to be able to rescale the machines in the MIG, the Overlord must run with a service account
+guaranteeing the following two scopes from the <a href="https://developers.google.com/identity/protocols/googlescopes#computev1" target="_blank" rel="noopener noreferrer">Compute Engine API</a></p><ul><li><code>https://www.googleapis.com/auth/cloud-platform</code></li><li><code>https://www.googleapis.com/auth/compute</code></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="overlord-dynamic-configuration">Overlord Dynamic Configuration<a href="#overlord-dynamic-configuration" cl [...]
+the <code>maxNumWorkers</code> and <code>minNumWorkers</code> used to define the boundaries in between which the
+number of instances must be at any time.</p><p>The internal level is the <code>envConfig</code> and it is used to specify</p><ul><li>The <code>numInstances</code> used to specify how many workers will be spawned at each
+request to provision more workers. This is safe to be left to <code>1</code></li><li>The <code>projectId</code> used to specify the name of the project in which the MIG resides</li><li>The <code>zoneName</code> used to identify in which zone of the worlds the MIG is</li><li>The <code>managedInstanceGroupName</code> used to specify the MIG containing the instances created or
+removed</li></ul><p>Please refer to the Overlord Dynamic Configuration section in the main <a href="/docs/29.0.0/configuration/">documentation</a>
+for parameters other than the ones specified here, such as <code>selectStrategy</code> etc.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="known-limitations">Known limitations<a href="#known-limitations" class="hash-link" aria-label="Direct link to Known limitations" title="Direct link to Known limitations"></a></h2><ul><li>The module internally uses the <a href="https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers/listManagedInstances" target="_blank" re [...]
+call from the API and, while the documentation of the API states that the call can be paged through using the
+<code>pageToken</code> argument, the responses to such call do not provide any <code>nextPageToken</code> to set such parameter. This means
+that the extension can operate safely with a maximum of 500 MiddleManagers instances at any time (the maximum number
+of instances to be returned for each call).</li></ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#overlord-dynamic-configuration" class="table-of-contents__link toc-highlight">Overlord Dynamic Configuration</a></li><li><a href="#known-limitations" class="table-of- [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/google.html/index.html b/docs/29.0.0/development/extensions-contrib/google.html/index.html
new file mode 100644
index 000000000..327a422cb
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/google.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/google">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/google" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/google' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/graphite.html/index.html b/docs/29.0.0/development/extensions-contrib/graphite.html/index.html
new file mode 100644
index 000000000..1cd82493d
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/graphite.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/graphite">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/graphite" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/graphite' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/graphite/index.html b/docs/29.0.0/development/extensions-contrib/graphite/index.html
new file mode 100644
index 000000000..6f9ca48e6
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/graphite/index.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/graphite" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Graphite Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Metrics can be sent by using <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-plaintext-protocol" target="_blank" rel="noopener noreferrer">plaintext</a> or <a href="http://graphite.readthedocs.io/en/latest/feeding-carbon.html#the-pickle-protocol" target="_blank" rel="noopener noreferrer">pickle</a> protocol.
+The pickle protocol is more efficient and supports sending batches of metrics (plaintext protocol send only one metric) in one request; batch size is configurable.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for graphite emitter are under <code>druid.emitter.graphite</code>.</p><table> [...]
+Graphite metric path is organized using the following schema:
+<code><namespacePrefix>.[<druid service name>].[<druid hostname>].<druid metrics dimensions>.<druid metrics name></code>
+Properly naming the metrics is critical to avoid conflicts, confusing data and potentially wrong interpretation later on.</p><p>Example <code>druid.historical.hist-host1_yahoo_com:8080.MyDataSourceName.GroupBy.query/time</code>:</p><ul><li><code>druid</code> -> namespace prefix</li><li><code>historical</code> -> service name</li><li><code>hist-host1.yahoo.com:8080</code> -> druid hostname</li><li><code>MyDataSourceName</code> -> dimension value</li><li><code>GroupBy</code> -& [...]
+The path will be in the form <code><namespacePrefix>.[<druid service name>].[<druid hostname>].<dimensions values ordered by dimension's name>.<metric></code>
+User has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code></p><p>You can omit the hostname by setting <code>ignoreHostname=true</code>
+<code>druid.SERVICE_NAME.dataSourceName.queryType.query/time</code></p><p>You can omit the service name by setting <code>ignoreServiceName=true</code>
+<code>druid.HOSTNAME.dataSourceName.queryType.query/time</code></p><p>Elements in metric name by default are separated by "/", so graphite will create all metrics on one level. If you want to have metrics in the tree structure, you have to set <code>replaceSlashWithDot=true</code>
+Original: <code>druid.HOSTNAME.dataSourceName.queryType.query/time</code>
+Changed: <code>druid.HOSTNAME.dataSourceName.queryType.query.time</code></p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block"></span><br></span><span class="to [...]
+Same as for the <code>all</code> converter user has control of <code><namespacePrefix>.[<druid service name>].[<druid hostname>].</code>
+White-list based converter comes with the following default white list map located under resources in <code>./src/main/resources/defaultWhiteListMap.json</code></p><p>Although user can override the default white list map by supplying a property called <code>mapPath</code>.
+This property is a String containing the path for the file containing <strong>white list map JSON object</strong>.
+For example the following converter will read the map from the file <code>/pathPrefix/fileName.json</code>.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain" style="display:inline-block [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/iceberg.html/index.html b/docs/29.0.0/development/extensions-contrib/iceberg.html/index.html
new file mode 100644
index 000000000..b3fda424a
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/iceberg.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/iceberg">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/iceberg" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/iceberg' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/iceberg/index.html b/docs/29.0.0/development/extensions-contrib/iceberg/index.html
new file mode 100644
index 000000000..426b2c408
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/iceberg/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/iceberg" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Iceberg extension | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Iceberg refers to these metastores as catalogs. The Iceberg extension lets you connect to the following Iceberg catalog types:</p><ul><li>Hive metastore catalog</li><li>Local catalog</li></ul><p>Druid does not support AWS Glue and REST based catalogs yet.</p><p>For a given catalog, Iceberg input source reads the table name from the catalog, applies the filters, and extracts all the underlying live data files up to the latest snapshot.
+The data files can be in Parquet, ORC, or Avro formats. The data files typically reside in a warehouse location, which can be in HDFS, S3, or the local filesystem.
+The <code>druid-iceberg-extensions</code> extension relies on the existing input source connectors in Druid to read the data files from the warehouse. Therefore, the Iceberg input source can be considered as an intermediate input source, which provides the file paths for other input source implementations.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="hive-metastore-catalog">Hive metastore catalog<a href="#hive-metastore-catalog" class="hash-link" aria-label="Direct link to Hive [...]
+<!-- -->You can also specify Hive properties under the <code>catalogProperties</code> object in the ingestion spec. </p><p>The <code>druid-iceberg-extensions</code> extension presently only supports HDFS, S3 and local warehouse directories.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="read-from-hdfs-warehouse">Read from HDFS warehouse<a href="#read-from-hdfs-warehouse" class="hash-link" aria-label="Direct link to Read from HDFS warehouse" title="Direct link to Read from HDFS war [...]
+The <code>warehouseSource</code> type in the ingestion spec should be <code>hdfs</code>.</p><p>For authenticating with Kerberized clusters, include <code>principal</code> and <code>keytab</code> properties in the <code>catalogProperties</code> object:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-s [...]
+Set the <code>type</code> property of the <code>warehouseSource</code> object to <code>s3</code> in the ingestion spec. If the S3 endpoint for the warehouse is different from the endpoint configured as the deep storage, include the following properties in the <code>warehouseSource</code> object to define the S3 endpoint settings:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockConte [...]
+The following properties are required in the <code>catalogProperties</code>:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"catalogProperties"</span><span class="token [...]
+The <code>warehouseSource</code> is set to <code>local</code> because this catalog only supports reading from a local filesystem.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="downloading-iceberg-extension">Downloading Iceberg extension<a href="#downloading-iceberg-extension" class="hash-link" aria-label="Direct link to Downloading Iceberg extension" title="Direct link to Downloading Iceberg extension"></a></h2><p>To download <code>druid-iceberg-extensions</code>, run the follow [...]
+Druid version:</p><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">java </span><span class="token punctuation" style="color:rgb(199, 146, 234)">\</span><span class="token plain"></span> [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/influx.html/index.html b/docs/29.0.0/development/extensions-contrib/influx.html/index.html
new file mode 100644
index 000000000..6ec64e4c7
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/influx.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/influx">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/influx" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/influx' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/influx/index.html b/docs/29.0.0/development/extensions-contrib/influx/index.html
new file mode 100644
index 000000000..45564cf17
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/influx/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/influx" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">InfluxDB Line Protocol Parser | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/influxdb-emitter.html/index.html b/docs/29.0.0/development/extensions-contrib/influxdb-emitter.html/index.html
new file mode 100644
index 000000000..116126666
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/influxdb-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/influxdb-emitter">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/influxdb-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/influxdb-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/influxdb-emitter/index.html b/docs/29.0.0/development/extensions-contrib/influxdb-emitter/index.html
new file mode 100644
index 000000000..3bae62059
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/influxdb-emitter/index.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/influxdb-emitter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">InfluxDB Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+When a metric event is fired it is added to a queue of events. After a configurable amount of time, the events on the queue are transformed to InfluxDB's line protocol
+and POSTed to the InfluxDB HTTP API. The entire queue is flushed at this point. The queue is also flushed as the emitter is shutdown.</p><p>Note that authentication and authorization must be <a href="https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/" target="_blank" rel="noopener noreferrer">enabled</a> on the InfluxDB server.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-lin [...]
+which will be added as a tag to the line protocol string if the metric has a dimension from the white list.
+The value of the dimension is sanitized such that every occurrence of a dot or whitespace is replaced with a <code>_</code> .</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#introduction" class="table-of-contents__link toc-highlight">Introduction</a></li><li><a hr [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/k8s-jobs.html/index.html b/docs/29.0.0/development/extensions-contrib/k8s-jobs.html/index.html
new file mode 100644
index 000000000..9208bda21
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/k8s-jobs.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/k8s-jobs">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/k8s-jobs" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/k8s-jobs' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/k8s-jobs/index.html b/docs/29.0.0/development/extensions-contrib/k8s-jobs/index.html
new file mode 100644
index 000000000..b8ac57d5e
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/k8s-jobs/index.html
@@ -0,0 +1,36 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/k8s-jobs" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">MM-less Druid in K8s | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<code>druid.indexer.runner.type: k8s</code> and <code>druid.indexer.task.encapsulatedTask: true</code></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="pod-adapters">Pod Adapters<a href="#pod-adapters" class="hash-link" aria-label="Direct link to Pod Adapters" title="Direct link to Pod Adapters"></a></h2><p>The logic defining how the pod template is built for your Kubernetes Job depends on which pod adapter you have specified.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="o [...]
+Dockerfile:
+<code>ENTRYPOINT: ["foo.sh"]</code></p><p>and in your sidecar specs:</p><div class="language-container: codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-container: codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> name: foo</span><br></span><span cla [...]
+*<em>Even for sidecars like Istio which are dynamically created by the service mesh, this needs to happen.</em></p><p>Instead do the following:
+You can keep your Dockerfile the same but you must have a sidecar spec like so:</p><div class="language-container: codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-container: codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> name: foo</span><br></span><span cl [...]
+<code>druid.indexer.runner.labels: '{"key":"value"}'</code>
+Annotations are the same with:
+<code>druid.indexer.runner.annotations: '{"key":"value"}'</code></p><p>All other configurations you had for the middle manager tasks must be moved under the overlord with one caveat, you must specify javaOpts as an array:
+<code>druid.indexer.runner.javaOptsArray</code>, <code>druid.indexer.runner.javaOpts</code> is no longer supported.</p><p>If you are running without a middle manager you need to also use <code>druid.processing.intermediaryData.storage.type=deepstore</code></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="custom-template-pod-adapter">Custom Template Pod Adapter<a href="#custom-template-pod-adapter" class="hash-link" aria-label="Direct link to Custom Template Pod Adapter" title="Direc [...]
+<code>druid.indexer.runner.type: k8sAndWorker</code> (instead of <code>druid.indexer.runner.type: k8s</code>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="additional-configurations">Additional Configurations<a href="#additional-configurations" class="hash-link" aria-label="Direct link to Additional Configurations" title="Direct link to Additional Configurations"></a></h3><table><thead><tr><th>Property</th><th>Possible Values</th><th>Description</th><th>Default</th><th>required< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/kafka-emitter.html/index.html b/docs/29.0.0/development/extensions-contrib/kafka-emitter.html/index.html
new file mode 100644
index 000000000..30cab5334
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/kafka-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/kafka-emitter">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/kafka-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/kafka-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/kafka-emitter/index.html b/docs/29.0.0/development/extensions-contrib/kafka-emitter/index.html
new file mode 100644
index 000000000..e2466f759
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/kafka-emitter/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/kafka-emitter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Kafka Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/develo [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Currently, Kafka has not only their nice ecosystem but also consumer API readily available.
+So, If you currently use Kafka, It's easy to integrate various tool or UI
+to monitor the status of your Druid cluster with this extension.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for the Kafka emitter are under <code>druid.emitter.kafka</code>.</p><table><thead><tr><th>Property</th><th>Description</th><th>Required</th><th>Default</th></tr></thead><tbody> [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/kafka-simple.html/index.html b/docs/29.0.0/development/extensions-contrib/kafka-simple.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/kafka-simple.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/materialized-view.html/index.html b/docs/29.0.0/development/extensions-contrib/materialized-view.html/index.html
new file mode 100644
index 000000000..c5c30b9d6
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/materialized-view.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/materialized-view">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/materialized-view" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/materialized-view' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/materialized-view/index.html b/docs/29.0.0/development/extensions-contrib/materialized-view/index.html
new file mode 100644
index 000000000..d8f65b5ce
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/materialized-view/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/materialized-view" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Materialized View | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The <code>derivativeDataSource</code> supervisor is used to keep the timeline of derived-dataSource consistent with base-dataSource. Each <code>derivativeDataSource</code> supervisor is responsible for one derived-dataSource.</p><p>A sample derivativeDataSource supervisor spec is shown below:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="pri [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html b/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html
new file mode 100644
index 000000000..1f621c405
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles/index.html b/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles/index.html
new file mode 100644
index 000000000..4cd3a7f5d
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/momentsketch-quantiles/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/momentsketch-quantiles" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Moment Sketches for Approximate Quantiles module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https:// [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+The momentsketch provides coarse quantile estimates with less space and aggregation time overheads than traditional sketches, approaching the performance of counts and sums by reconstructing distributions from computed statistics.</p><p>To use this Apache Druid extension, <a href="/docs/29.0.0/configuration/extensions#loading-extensions">include</a> in the extensions load list.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="aggregator">Aggregator<a href="#aggregator" class="hash-l [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/moving-average-query.html/index.html b/docs/29.0.0/development/extensions-contrib/moving-average-query.html/index.html
new file mode 100644
index 000000000..6a0ae942d
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/moving-average-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/moving-average-query">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/moving-average-query" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/moving-average-query' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/moving-average-query/index.html b/docs/29.0.0/development/extensions-contrib/moving-average-query/index.html
new file mode 100644
index 000000000..0f59ac067
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/moving-average-query/index.html
@@ -0,0 +1,31 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/moving-average-query" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Moving Average Query | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0 [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+Using a MeanNoNulls averager is useful when the interval starts at the dataset beginning time.
+In that case, the first records will ignore missing buckets and average won't be artificially low.
+However, this also means that empty days in a sparse dataset will also be ignored.</p><p>Example of usage:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, [...]
+A prime example would be weekly buckets, resulting in a Day of Week calculation. (Other examples: Month of year, Hour of day).</p><p>I.e. when using these parameters:</p><ul><li><em>granularity</em>: period=P1D (daily)</li><li><em>buckets</em>: 28</li><li><em>cycleSize</em>: 7</li></ul><p>Within each output record, the averager will compute the result over the following buckets: current (#0), #7, #14, #21.
+Whereas without specifying cycleSize it would have computed over all 28 buckets.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="examples">Examples<a href="#examples" class="hash-link" aria-label="Direct link to Examples" title="Direct link to Examples"></a></h2><p>All examples are based on the Wikipedia dataset provided in the Druid <a href="/docs/29.0.0/tutorials/">tutorials</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="basic-example">Basic example<a href="#basic-ex [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html b/docs/29.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html
new file mode 100644
index 000000000..75466a0cb
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/opentsdb-emitter.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/opentsdb-emitter">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/opentsdb-emitter" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/opentsdb-emitter' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/opentsdb-emitter/index.html b/docs/29.0.0/development/extensions-contrib/opentsdb-emitter/index.html
new file mode 100644
index 000000000..34d288954
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/opentsdb-emitter/index.html
@@ -0,0 +1,29 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/opentsdb-emitter" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">OpenTSDB Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/dev [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+If the user does not specify their own JSON file, a default file is used. All metrics are expected to be configured in the JSON file. Metrics which are not configured will be logged.
+Desired metrics and dimensions is organized using the following schema:<code><druid metric name> : [ <dimension list> ]</code><br>
+e.g.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"query/time"</span><span class="token operator" style="color:rgb(137, 221, 255)">:</span><span class="token plain"> < [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/orc.html/index.html b/docs/29.0.0/development/extensions-contrib/orc.html/index.html
new file mode 100644
index 000000000..d8be4d995
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/orc.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/orc">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/orc" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/orc' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/parquet.html/index.html b/docs/29.0.0/development/extensions-contrib/parquet.html/index.html
new file mode 100644
index 000000000..76a4f8cf9
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/parquet.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/parquet">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/parquet" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/parquet' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/prometheus.html/index.html b/docs/29.0.0/development/extensions-contrib/prometheus.html/index.html
new file mode 100644
index 000000000..7de05293d
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/prometheus.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/prometheus">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/prometheus" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/prometheus' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/prometheus/index.html b/docs/29.0.0/development/extensions-contrib/prometheus/index.html
new file mode 100644
index 000000000..679154a29
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/prometheus/index.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/prometheus" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Prometheus Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/d [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+So, these tasks need to be configured to use <code>pushgateway</code> strategy to push metrics from Druid to prometheus gateway.</p><p>If this emitter is configured to use <code>exporter</code> strategy globally, some of the above configurations need to be overridden in the middle manager so that spawned peon tasks can still use the <code>pushgateway</code> strategy.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><d [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric. Prometheus expects
+histogram timers to use Seconds as the base unit. Timers which do not use seconds as a base unit can use the <code>conversionFactor</code> to set
+the base time unit. If the user does not specify their own JSON file, a default mapping is used. All
+metrics are expected to be mapped. Metrics which are not mapped will not be tracked.</p><p>Prometheus metric path is organized using the following schema:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span [...]
+the service name. For example:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token property">"druid/coordinator-segment/count"</span><span class="token plain"> </span><span class="toke [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/rabbitmq.html/index.html b/docs/29.0.0/development/extensions-contrib/rabbitmq.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/rabbitmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/redis-cache.html/index.html b/docs/29.0.0/development/extensions-contrib/redis-cache.html/index.html
new file mode 100644
index 000000000..ccb8b6c9b
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/redis-cache.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/redis-cache">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/redis-cache" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/redis-cache' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/redis-cache/index.html b/docs/29.0.0/development/extensions-contrib/redis-cache/index.html
new file mode 100644
index 000000000..db939a4d0
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/redis-cache/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/redis-cache" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Druid Redis Cache | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/de [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/rocketmq.html/index.html b/docs/29.0.0/development/extensions-contrib/rocketmq.html/index.html
new file mode 100644
index 000000000..39f30ade7
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/rocketmq.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/ingestion/standalone-realtime">
+ <link rel="canonical" href="/docs/29.0.0/ingestion/standalone-realtime" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/ingestion/standalone-realtime' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/scan-query.html/index.html b/docs/29.0.0/development/extensions-contrib/scan-query.html/index.html
new file mode 100644
index 000000000..708b68d25
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/scan-query.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/querying/scan-query">
+ <link rel="canonical" href="/docs/29.0.0/querying/scan-query" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/querying/scan-query' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/spectator-histogram.html/index.html b/docs/29.0.0/development/extensions-contrib/spectator-histogram.html/index.html
new file mode 100644
index 000000000..9ed7d02a4
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/spectator-histogram.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/spectator-histogram">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/spectator-histogram" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/spectator-histogram' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/spectator-histogram/index.html b/docs/29.0.0/development/extensions-contrib/spectator-histogram/index.html
new file mode 100644
index 000000000..8294d287c
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/spectator-histogram/index.html
@@ -0,0 +1,93 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/spectator-histogram" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Spectator Histogram module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+post-aggregators based on Spectator fixed-bucket histograms.</p><p>Consider SpectatorHistogram to compute percentile approximations. This extension has a reduced storage footprint compared to the <a href="/docs/29.0.0/development/extensions-core/datasketches-extension">DataSketches extension</a>, which results in smaller segment sizes, faster loading from deep storage, and lower memory usage. This extension provides fast and accurate queries on large datasets at low storage cost.</p><p>T [...]
+adds 48 bytes per row. This represents an eightfold reduction in additional storage size for spectator histograms.</p><p><img loading="lazy" alt="Comparison of datasource sizes in web console" src="/assets/images/spectator-histogram-size-comparison-665af4720d1b302515a31f758b824f26.png" width="689" height="225" class="img_ev3q"></p><p>As rollup improves, so does the size savings. For example, when you ingest the Wikipedia dataset
+with day-grain query granularity and remove all dimensions except <code>countryName</code>,
+this results in a segment that has just 106 rows. The base segment has 87 bytes per row.
+Compare the following bytes per row for SpectatorHistogram versus DataSketches:</p><ul><li>An additional <code>spectatorHistogram</code> column adds 27 bytes per row on average.</li><li>An additional <code>quantilesDoublesSketch</code> column adds 255 bytes per row.</li></ul><p>SpectatorHistogram reduces the additional storage size by 9.4 times in this example.
+Storage gains will differ per dataset depending on the variance and rollup of the data.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="background">Background<a href="#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background"></a></h2><p><a href="https://netflix.github.io/atlas-docs/spectator/" target="_blank" rel="noopener noreferrer">Spectator</a> is a simple library
+for instrumenting code to record dimensional time series data.
+It was built, primarily, to work with <a href="https://netflix.github.io/atlas-docs/" target="_blank" rel="noopener noreferrer">Atlas</a>.
+Atlas was developed by Netflix to manage dimensional time series data for near
+real-time operational insight.</p><p>With the <a href="https://github.com/Netflix-Skunkworks/iep-apps/tree/main/atlas-druid" target="_blank" rel="noopener noreferrer">Atlas-Druid</a>
+service, it's possible to use the power of Atlas queries, backed by Druid as a
+data store to benefit from high-dimensionality and high-cardinality data.</p><p>SpectatorHistogram is designed for efficient parallel aggregations while still
+allowing for filtering and grouping by dimensions.
+It provides similar functionality to the built-in DataSketches <code>quantilesDoublesSketch</code> aggregator, but is
+opinionated to maintain higher absolute accuracy at smaller values.
+Larger values have lower absolute accuracy; however, relative accuracy is maintained across the range.
+See <a href="#histogram-bucket-boundaries">Bucket boundaries</a> for more information.
+The SpectatorHistogram is optimized for typical measurements from cloud services and web apps,
+such as page load time, transferred bytes, response time, and request latency.</p><p>Through some trade-offs SpectatorHistogram provides a significantly more compact
+representation with the same aggregation performance and accuracy as
+DataSketches Quantiles Sketch. Note that results depend on the dataset.
+Also see the <!-- -->[limitations]<!-- -->(#limitations] of this extension.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="limitations">Limitations<a href="#limitations" class="hash-link" aria-label="Direct link to Limitations" title="Direct link to Limitations"></a></h2><ul><li>Supports positive long integer values within the range of [0, 2^53). Negatives are
+coerced to 0.</li><li>Does not support decimals.</li><li>Does not support Druid SQL queries, only native queries.</li><li>Does not support vectorized queries.</li><li>Generates 276 fixed buckets with increasing bucket widths. In practice, the observed error of computed percentiles ranges from 0.1% to 3%, exclusive. See <a href="#histogram-bucket-boundaries">Bucket boundaries</a> for the full list of bucket boundaries.</li></ul><div class="theme-admonition theme-admonition-tip alert alert [...]
+values as well as aggregating or combining pre-aggregated histograms generated using
+the SpectatorHistogram aggregator itself.
+While you can generate histograms on the fly at query time, it is generally more
+performant to generate histograms during ingestion and then combine them at
+query time. This is especially true where rollup is enabled. It may be misleading or
+incorrect to generate histograms from already rolled-up summed data.</p><p>The module provides postAggregators, <code>percentileSpectatorHistogram</code> (singular) and
+<code>percentilesSpectatorHistogram</code> (plural), to compute approximate
+percentiles from histograms generated by the SpectatorHistogram aggregator.
+Again, these postAggregators can be used to compute percentiles from raw numeric
+values via the SpectatorHistogram aggregator or from pre-aggregated histograms.</p><blockquote><p>If you're only using the aggregator to compute percentiles from raw numeric values,
+then you can use the built-in quantilesDoublesSketch aggregator instead. The performance
+and accuracy are comparable. However, the DataSketches aggregator supports negative values,
+and you don't need to download an additional extension.</p></blockquote><p>An aggregated SpectatorHistogram can also be queried using a <code>longSum</code> or <code>doubleSum</code>
+aggregator to retrieve the population of the histogram. This is effectively the count
+of the number of values that were aggregated into the histogram. This flexibility can
+avoid the need to maintain a separate metric for the count of values.</p><p>For high-frequency measurements, you may need to pre-aggregate data at the client prior
+to sending into Druid. For example, if you're measuring individual image render times
+on an image-heavy website, you may want to aggregate the render times for a page-view
+into a single histogram prior to sending to Druid in real-time. This can reduce the
+amount of data that's needed to send from the client across the wire.</p><p>SpectatorHistogram supports ingesting pre-aggregated histograms in real-time and batch.
+They can be sent as a JSON map, keyed by the spectator bucket ID and the value is the
+count of values. This is the same format as the serialized JSON representation of the
+histogram. The keys need not be ordered or contiguous. For example:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token p [...]
+the raw data, or from combining pre-aggregated histograms. The result is represented in
+JSON format where the keys are the bucket index and the values are the count of entries
+in that bucket.</p><p>The buckets are defined as per the Spectator <a href="https://github.com/Netflix/spectator/blob/main/spectator-api/src/main/java/com/netflix/spectator/api/histogram/PercentileBuckets.java" target="_blank" rel="noopener noreferrer">PercentileBuckets</a> specification.
+See <a href="#histogram-bucket-boundaries">Histogram bucket boundaries</a> for the full list of bucket boundaries.</p><div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain"> </span><span class="to [...]
+underlying implementation. If you use the Atlas-Druid service, the different types
+signal the service on how to handle the resulting data from a query.</p><ul><li>spectatorHistogramTimer signals that the histogram is representing
+a collection of timer values. It is recommended to normalize timer values to nanoseconds
+at, or prior to, ingestion. If queried via the Atlas-Druid service, it will
+normalize timers to second resolution at query time as a more natural unit of time
+for human consumption.</li><li>spectatorHistogram and spectatorHistogramDistribution are generic histograms that
+can be used to represent any measured value without units. No normalization is
+required or performed.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="spectatorhistogram-aggregator"><code>spectatorHistogram</code> aggregator<a href="#spectatorhistogram-aggregator" class="hash-link" aria-label="Direct link to spectatorhistogram-aggregator" title="Direct link to spectatorhistogram-aggregator"></a></h3><p>Alias: <code>spectatorHistogramDistribution</code>, <code>spectatorHistogramTimer</code></p><p>To aggregate at query time:</p><div class="codeBlockContai [...]
+than to request individual percentiles in separate queries. This array-based
+helper is provided for convenience and has a marginal performance benefit over
+using the singular percentile post-aggregator multiple times within a query.
+The more expensive part of the query is the aggregation of the histogram.
+The post-aggregation calculations all happen on the same aggregated histogram.</p></blockquote><p>The results contain arrays matching the length and order of the requested
+array of percentiles.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">"percentilesAdded": [</span><br></span><span class="token-line" style="color:#bfc7d5"><span class="token plain"> 0 [...]
+The first bucket index is 0 and the last bucket index is 275.
+The bucket widths increase as the bucket index increases. This leads to a greater absolute error for larger values, but maintains a relative error of rough percentage across the number range.
+For example, the maximum error at value 10 is zero since the bucket width is 1 (the difference of <code>11-10</code>). For a value of 16,000,000,000, the bucket width is 1,431,655,768 (from <code>17179869184-15748213416</code>). This gives an error of up to ~8.9%, from <code>1,431,655,768/16,000,000,000*100</code>. In practice, the observed error of computed percentiles is in the range of (0.1%, 3%).</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-co [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/sqlserver.html/index.html b/docs/29.0.0/development/extensions-contrib/sqlserver.html/index.html
new file mode 100644
index 000000000..45f671969
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/sqlserver.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/sqlserver">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/sqlserver" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/sqlserver' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/sqlserver/index.html b/docs/29.0.0/development/extensions-contrib/sqlserver/index.html
new file mode 100644
index 000000000..800a625d2
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/sqlserver/index.html
@@ -0,0 +1,27 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/sqlserver" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Microsoft SQLServer | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/ [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+with the location (host name and port) of the database.</p><div class="language-properties codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-properties codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token plain">druid.metadata.storage.type=sqlserver</span><br></span><span class= [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/statsd.html/index.html b/docs/29.0.0/development/extensions-contrib/statsd.html/index.html
new file mode 100644
index 000000000..12136f18f
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/statsd.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/statsd">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/statsd" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/statsd' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/statsd/index.html b/docs/29.0.0/development/extensions-contrib/statsd/index.html
new file mode 100644
index 000000000..6dfb01d40
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/statsd/index.html
@@ -0,0 +1,41 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/statsd" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">StatsD Emitter | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/devel [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+(<a href="https://github.com/etsy/statsd" target="_blank" rel="noopener noreferrer">https://github.com/etsy/statsd</a>)
+(<a href="https://github.com/armon/statsite" target="_blank" rel="noopener noreferrer">https://github.com/armon/statsite</a>)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="configuration">Configuration<a href="#configuration" class="hash-link" aria-label="Direct link to Configuration" title="Direct link to Configuration"></a></h2><p>All the configuration parameters for the StatsD emitter are under <code>druid.emitter.statsd</code>.</p><table><thead><tr><th>property</th><th>descri [...]
+be provided as a JSON file. Additionally, this mapping specifies which dimensions should be included for each metric.
+StatsD expects that metric values be integers. Druid emits some metrics with values between the range 0 and 1. To accommodate these metrics they are converted
+into the range 0 to 100. This conversion can be enabled by setting the optional "convertRange" field true in the JSON mapping file.
+If the user does not specify their own JSON file, a default mapping is used. All
+metrics are expected to be mapped. Metrics which are not mapped will log an error.
+StatsD metric path is organized using the following schema:
+<code><druid metric name> : { "dimensions" : <dimension list>, "type" : <StatsD type>, "convertRange" : true/false}</code>
+e.g.
+<code>query/time" : { "dimensions" : ["dataSource", "type"], "type" : "timer"}</code></p><p>For metrics which are emitted from multiple services with different dimensions, the metric name is prefixed with
+the service name.
+e.g.
+<code>"druid/coordinator-segment/count" : { "dimensions" : ["dataSource"], "type" : "gauge" },
+ "druid/historical-segment/count" : { "dimensions" : ["dataSource", "tier", "priority"], "type" : "gauge" }</code></p><p>For most use-cases, the default mapping is sufficient.</p></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-content [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html b/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html
new file mode 100644
index 000000000..dba65f930
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html b/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html
new file mode 100644
index 000000000..7ef3470ff
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/tdigestsketch-quantiles/index.html
@@ -0,0 +1,35 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/tdigestsketch-quantiles" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">T-Digest Quantiles Sketch module | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+T-Digest (<a href="https://github.com/tdunning/t-digest" target="_blank" rel="noopener noreferrer">https://github.com/tdunning/t-digest</a>) is a popular data structure for accurate on-line accumulation of
+rank-based statistics such as quantiles and trimmed means.
+The data structure is also designed for parallel programming use cases like distributed aggregations or map reduce jobs by making combining two intermediate t-digests easy and efficient.</p><p>The tDigestSketch aggregator is capable of generating sketches from raw numeric values as well as
+aggregating/combining pre-generated T-Digest sketches generated using the tDigestSketch aggregator itself.
+While one can generate sketches on the fly during the query time itself, it generally is more performant
+to generate sketches during ingestion time itself and then combining them during query time.
+The module also provides a postAggregator, quantilesFromTDigestSketch, that can be used to compute approximate
+quantiles from T-Digest sketches generated by the tDigestSketch aggregator.</p><p>To use this aggregator, make sure you <a href="/docs/29.0.0/configuration/extensions#loading-extensions">include</a> the extension in your config file:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlock [...]
+combining pre-generated T-Digest sketches.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span>< [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/thrift.html/index.html b/docs/29.0.0/development/extensions-contrib/thrift.html/index.html
new file mode 100644
index 000000000..6aaa87dc1
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/thrift.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/thrift">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/thrift" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/thrift' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/thrift/index.html b/docs/29.0.0/development/extensions-contrib/thrift/index.html
new file mode 100644
index 000000000..fb3c5d082
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/thrift/index.html
@@ -0,0 +1,26 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/thrift" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Thrift | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/docs/29.0.0/development/e [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/time-min-max.html/index.html b/docs/29.0.0/development/extensions-contrib/time-min-max.html/index.html
new file mode 100644
index 000000000..251fdd44f
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/time-min-max.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-contrib/time-min-max">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-contrib/time-min-max" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-contrib/time-min-max' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-contrib/time-min-max/index.html b/docs/29.0.0/development/extensions-contrib/time-min-max/index.html
new file mode 100644
index 000000000..b197f9add
--- /dev/null
+++ b/docs/29.0.0/development/extensions-contrib/time-min-max/index.html
@@ -0,0 +1,28 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-contrib/time-min-max" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Timestamp Min/Max aggregators | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.org/do [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+To use this feature, a "timeMin" or "timeMax" aggregator must be included at indexing time.
+They can apply to any columns that can be converted to timestamp, which include Long, DateTime, Timestamp, and String types.</p><p>For example, when a data set consists of timestamp, dimension, and metric value like followings.</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_ [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-core/approximate-histograms.html/index.html b/docs/29.0.0/development/extensions-core/approximate-histograms.html/index.html
new file mode 100644
index 000000000..4fda55c23
--- /dev/null
+++ b/docs/29.0.0/development/extensions-core/approximate-histograms.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="UTF-8">
+ <meta http-equiv="refresh" content="0; url=/docs/29.0.0/development/extensions-core/approximate-histograms">
+ <link rel="canonical" href="/docs/29.0.0/development/extensions-core/approximate-histograms" />
+ </head>
+ <script>
+ window.location.href = '/docs/29.0.0/development/extensions-core/approximate-histograms' + window.location.search + window.location.hash;
+ </script>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-core/approximate-histograms/index.html b/docs/29.0.0/development/extensions-core/approximate-histograms/index.html
new file mode 100644
index 000000000..f97cdff80
--- /dev/null
+++ b/docs/29.0.0/development/extensions-core/approximate-histograms/index.html
@@ -0,0 +1,52 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="docs-wrapper docs-doc-page docs-version-current plugin-docs plugin-id-default docs-doc-id-development/extensions-core/approximate-histograms" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v2.4.3">
+<title data-rh="true">Approximate Histogram aggregators | Apache® Druid</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" name="twitter:image" content="https://druid.apache.org/img/druid_nav.png"><meta data-rh="true" property="og:url" content="https://druid.apache.or [...]
+<link rel="preconnect" href="https://www.googletagmanager.com">
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-131010415-1"></script>
+<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","UA-131010415-1",{})</script>
+
+
+
+
+
+<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css">
+<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script><link rel="stylesheet" href="/assets/css/styles.4b88a1d0.css">
+<link rel="preload" href="/assets/js/runtime~main.fc3ed64b.js" as="script">
+<link rel="preload" href="/assets/js/main.9edfa408.js" as="script">
+</head>
+<body class="navigation-with-keyboard">
+<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
+<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbar--dark"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" strok [...]
+<a href="http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf" target="_blank" rel="noopener noreferrer">http://jmlr.org/papers/volume11/ben-haim10a/ben-haim10a.pdf</a>
+to compute approximate histograms, with the following modifications:</p><ul><li>some tradeoffs in accuracy were made in the interest of speed (see below)</li><li>the sketch maintains the exact original data as long as the number of
+distinct data points is fewer than the resolutions (number of centroids),
+increasing accuracy when there are few data points, or when dealing with
+discrete data points. You can find some of the details in <a href="https://metamarkets.com/2013/histograms/" target="_blank" rel="noopener noreferrer">this post</a>.</li></ul><p>Here are a few things to note before using approximate histograms:</p><ul><li>As indicated in the original paper, there are no formal error bounds on the
+approximation. In practice, the approximation gets worse if the distribution
+is skewed.</li><li>The algorithm is order-dependent, so results can vary for the same query, due
+to variations in the order in which results are merged.</li><li>In general, the algorithm only works well if the data that comes is randomly
+distributed (i.e. if data points end up sorted in a column, approximation
+will be horrible)</li><li>We traded accuracy for aggregation speed, taking some shortcuts when adding
+histograms together, which can lead to pathological cases if your data is
+ordered in some way, or if your distribution has long tails. It should be
+cheaper to increase the resolution of the sketch to get the accuracy you need.</li></ul><p>That being said, those sketches can be useful to get a first order approximation
+when averages are not good enough. Assuming most rows in your segment store
+fewer data points than the resolution of histogram, you should be able to use
+them for monitoring purposes and detect meaningful variations with a few
+hundred centroids. To get good accuracy readings on 95th percentiles with
+millions of rows of data, you may want to use several thousand centroids,
+especially with long tails, since that's where the approximation will be worse.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="creating-approximate-histogram-sketches-at-ingestion-time">Creating approximate histogram sketches at ingestion time<a href="#creating-approximate-histogram-sketches-at-ingestion-time" class="hash-link" aria-label="Direct link to Creating approximate histogram sketches at ingestion time" title="Direct link to Creating approximate histogram sketches at [...]
+indexing time. The ingestion aggregator can only apply to numeric values. If you use "approxHistogram"
+then any input rows missing the value will be considered to have a value of 0, while with "approxHistogramFold"
+such rows will be ignored.</p><p>To query for results, an "approxHistogramFold" aggregator must be included in the
+query.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" style="color:rgb(199, 146, 234)">{</span><span class="token plain"></span><br></span><span class="token-line" style="color [...]
+into bucketed histogram representations, as well as to compute various
+distribution metrics such as quantiles, min, and max.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="equal-buckets-post-aggregator">Equal buckets post-aggregator<a href="#equal-buckets-post-aggregator" class="hash-link" aria-label="Direct link to Equal buckets post-aggregator" title="Direct link to Equal buckets post-aggregator"></a></h3><p>Computes a visual representation of the approximate histogram with a given number of equal-sized bins.
+Bucket intervals are based on the range of the underlying data. This aggregator is not supported for the fixed buckets histogram.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#bfc7d5;--prism-background-color:#292d3e"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#bfc7d5"><span class="token punctuation" [...]
+<script src="/assets/js/runtime~main.fc3ed64b.js"></script>
+<script src="/assets/js/main.9edfa408.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/29.0.0/development/extensions-core/avro.html/index.html b/docs/29.0.0/development/extensions-core/avro.html/index.html
new file mode 100644
index 000000000..a24575824
--- /dev/null
+++ b/docs/29.0.0/development/extensions-core/avro.html/index.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
... 21508 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org