diff --git a/examples/FastAPI/.gitignore b/examples/FastAPI/.gitignore new file mode 100644 index 00000000..e5d259d9 --- /dev/null +++ b/examples/FastAPI/.gitignore @@ -0,0 +1,4 @@ +dump.rdb +env/ +.env +__pycache__ \ No newline at end of file diff --git a/examples/FastAPI/README.md b/examples/FastAPI/README.md new file mode 100644 index 00000000..579e768e --- /dev/null +++ b/examples/FastAPI/README.md @@ -0,0 +1,113 @@ +### 🐴 Why +This tutorial should serve as an example of using supabase api to connect to your database instance and build a service to periodically cache and serve consumer credit data on client request. This project covers redis as a caching mechanism, supabase to support our postgres instance, and fastapi for our framework, all deployed on Deta Cloud. + +See docs for more information, + +### ☂️ Setting up your environment + +Setup your virtual environment: + +```bash +python3 -m venv env +``` + +Activating your environment + +```zsh +source env/bin/activate +``` + +In the root directory run the following: + +```bash +pip install -r requirements.txt +``` + +After setting up supabase you need to create a `.env` file with the following: + +```bash +URL= +KEY= +LOCAL_REDIS_INSTANCE=redis://127.0.0.1:6379 +``` + +### 🤖 Starting Redis in development environment + +To begin working with redis, run the following command, after completion open a new terminal window. + +```zsh +redis-server +``` + +### 👾 Activating your development server + +To start your local server run the following command + +```zsh +uvicorn main:app --reload +``` + +On success of the commad you should see; + +```zsh +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [13385] using watchgod +INFO: Started server process [13387] +2022-02-11 19:32:12,509:INFO - Started server process [13387] +INFO: Waiting for application startup. +2022-02-11 19:32:12,509:INFO - Waiting for application startup. +2022-02-11 19:32:12,510:INFO - 02/11/2022 07:32:12 PM | CONNECT_BEGIN: Attempting to connect to Redis server... +2022-02-11 19:32:12,511:INFO - 02/11/2022 07:32:12 PM | CONNECT_SUCCESS: Redis client is connected to server. +INFO: Application startup complete. +2022-02-11 19:32:12,511:INFO - Application startup complete. +``` + +### 🎾 Endpoints + +Introduction to your application. +```bash +http "http://127.0.0.1:8000/" + +HTTP/1.1 200 OK +content-length: 102 +content-type: application/json +date: Wed, 16 Feb 2022 22:01:14 GMT +server: uvicorn + +{ + "👋 Hello": "Please refer to the readme documentation for more or visit http://localhost:8000/docs" +} +``` + +Working with your redis cache, the following call will pull data +from your supabase database, and cache it. + +The x-fastapi-cache header field indicates that this response was found in the Redis cache (a.k.a. a Hit). + +The only other possible value for this field is Miss. The expires field and max-age value in the cache-control field indicate that this response will be considered fresh for 604321 seconds(1 week). This is expected since it was specified in the @cache decorator. + +The etag field is an identifier that is created by converting the response data to a string and applying a hash function. If a request containing the if-none-match header is received, any etag value(s) included in the request will be used to determine if the data requested is the same as the data stored in the cache. If they are the same, a 304 NOT MODIFIED response will be sent. If they are not the same, the cached data will be sent with a 200 OK response. + +```bash +# Command +http "http://127.0.0.1:8000/cachedResults" + +# Response Headers +HTTP/1.1 200 OK +cache-control: max-age=604321 +content-length: 894 +content-type: application/json +date: Wed, 16 Feb 2022 21:53:56 GMT +etag: W/-9174636245072902018 +expires: Wed, 23 Feb 2022 21:45:57 GMT +server: uvicorn +x-supafast-cache: Hit +``` + + +### Docs + +- [Installing Redis](https://redis.io/topics/quickstart) +- [Setting up Supabase](https://supabase.com/docs/reference) +- [Getting started with FastApi](https://fastapi.tiangolo.com/tutorial/) +- [Tutorial Author](https://github.com/cloudguruab) \ No newline at end of file diff --git a/examples/FastAPI/__init__.py b/examples/FastAPI/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/FastAPI/config.py b/examples/FastAPI/config.py new file mode 100644 index 00000000..c723e774 --- /dev/null +++ b/examples/FastAPI/config.py @@ -0,0 +1,15 @@ +import os +from dotenv import load_dotenv + +load_dotenv() + +class Config: + """ + Root level configuration for project + """ + + URL = os.getenv('URL') + + KEY = os.getenv('KEY') + + REDIS_URL = os.getenv('LOCAL_REDIS_INSTANCE') \ No newline at end of file diff --git a/examples/FastAPI/data/__init__.py b/examples/FastAPI/data/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/examples/FastAPI/data/credit_data.csv b/examples/FastAPI/data/credit_data.csv new file mode 100644 index 00000000..d5667156 --- /dev/null +++ b/examples/FastAPI/data/credit_data.csv @@ -0,0 +1,2001 @@ +clientid,income,age,loan,default +1,66155.9251,59.01701507,8106.532131,0 +2,34415.15397,48.1171531,6564.745018,0 +3,57317.17006,63.10804949,8020.953296,0 +4,42709.5342,45.75197235,6103.64226,0 +5,66952.68885,18.58433593,8770.099235,1 +6,24904.06414,57.4716071,15.49859844,0 +7,48430.35961,26.80913242,5722.581981,0 +8,24500.14198,32.89754832,2971.00331,1 +9,40654.89254,55.49685254,4755.82528,0 +10,25075.87277,39.77637806,1409.230371,0 +11,64131.41537,25.67957535,4351.028971,0 +12,59436.84712,60.47193585,9254.244538,0 +13,61050.34608,26.35504385,5893.264659,0 +14,27267.99546,61.57677582,4759.787581,0 +15,63061.96017,39.20155289,1850.369377,0 +16,50501.72669,-28.21836132,3977.287432,0 +17,43548.65471,39.57453035,3935.544453,0 +18,43378.17519,60.84831794,3277.737553,0 +19,20542.36507,61.69057071,3157.44229,0 +20,58887.35755,26.07609302,4965.516066,0 +21,23000.784,31.76135417,1148.118057,0 +22,32197.6207,-52.42327992,4244.057136,0 +23,23329.31941,48.57697453,222.6222987,0 +24,27845.80089,51.9706241,4959.921226,0 +25,65301.98403,48.84092177,5465.267886,0 +26,47451.63012,27.03174131,5361.282716,0 +27,63287.03891,-36.49697551,9595.286289,0 +28,45727.45987,55.83992185,6376.822949,0 +29,59417.80541,,2082.625938,0 +30,58842.89131,54.51094756,10871.18679,0 +31,48528.8528,,6155.78467,0 +32,23526.30256,,2862.010139,0 +33,67252.90061,38.13190746,4221.303157,0 +34,58886.85129,38.66150424,7271.552032,0 +35,57584.97379,36.67202092,1728.423755,0 +36,26289.97231,20.66677873,341.146966,0 +37,25952.38147,58.1850173,2109.200772,0 +38,32464.09188,50.22500592,4326.705073,0 +39,60921.0631,18.84052576,968.8363827,0 +40,26578.53669,32.67604425,3489.843136,1 +41,66260.12156,32.89669307,7035.589107,0 +42,58787.45524,62.64130285,4167.786724,0 +43,62545.70871,49.04043324,4362.905812,0 +44,24381.95345,25.25233071,4227.018986,1 +45,67852.10587,47.32189906,5730.588251,0 +46,41725.61286,18.13003836,1185.2147,0 +47,41896.9716,47.25073103,4892.209734,0 +48,44379.72965,50.08867129,1814.335082,0 +49,28416.89938,57.9287193,1788.973736,0 +50,68427.16311,46.30824019,1658.070233,0 +51,35975.79493,35.70865177,6610.366179,0 +52,57596.3541,29.2460566,3344.384401,0 +53,29681.88309,54.95928719,1745.871674,0 +54,51656.93867,47.7150637,7158.13906,0 +55,24912.84268,49.3663712,267.6962986,0 +56,47761.82407,50.09815907,5549.799128,0 +57,22248.1792,23.44362417,4364.975281,1 +58,29724.47688,31.9685264,3075.345728,0 +59,52143.82367,20.83763392,2393.099679,0 +60,56577.72286,36.84780068,5947.421721,0 +61,37660.77072,53.74506047,2129.597165,0 +62,37403.7954,47.9441217,2044.047045,0 +63,31652.69373,62.02380247,5151.070445,0 +64,32727.70073,34.47487101,1087.919364,0 +65,69078.60481,25.10752405,4076.583914,0 +66,40622.19487,41.52718879,4949.902333,0 +67,37521.01717,60.54107743,8.012076247,0 +68,30735.8085,22.24209774,5946.822297,1 +69,24857.69488,21.59867635,2692.163459,0 +70,33180.20159,49.56597728,4621.997742,0 +71,66628.26009,52.38387344,5992.885092,0 +72,38564.93213,21.21649167,5604.16999,1 +73,33704.5085,33.18310623,5898.000893,1 +74,57018.48483,44.82571531,3507.252166,0 +75,40526.90279,28.60637596,2119.984911,0 +76,50827.98052,51.01293719,1765.983337,0 +77,40775.8116,60.28875683,1922.610022,0 +78,55467.15141,56.85133096,9226.902041,0 +79,38789.02939,61.22928543,7650.65521,0 +80,58074.84013,50.07492427,7388.02444,0 +81,57814.10634,43.8309231,7252.120004,0 +82,45190.72918,53.83952,7893.559889,0 +83,36801.90718,43.02794342,5406.344926,0 +84,68811.77942,24.03826535,4211.302611,0 +85,30483.29553,33.65644124,4514.00978,1 +86,44930.39417,19.77738585,7708.315625,1 +87,43671.45655,25.58503698,8066.697865,1 +88,27612.9148,19.21244819,1513.6242,0 +89,53607.32693,27.5617124,2378.766173,0 +90,33036.68312,25.06336742,958.9798221,0 +91,64275.83489,61.440913,7520.032053,0 +92,30673.8375,59.33383708,383.1075694,0 +93,58793.61431,56.49441041,4391.981054,0 +94,21053.49062,63.37940765,754.6018821,0 +95,42095.4222,55.36618805,1183.704568,0 +96,50360.67879,28.83954247,4217.166823,0 +97,41970.72448,63.16991394,1622.317392,0 +98,51663.41018,63.73571024,4147.888585,0 +99,53601.81244,20.24062127,9601.375482,1 +100,43439.98873,24.17947032,6879.306007,1 +101,51461.05317,36.65155863,7292.264177,0 +102,41285.17231,47.97630816,2313.825005,0 +103,62895.74977,49.92260372,2001.281514,0 +104,57296.16082,25.70848233,10601.08278,1 +105,60844.09249,45.655205,12072.25576,0 +106,47634.54955,44.29487133,141.7038179,0 +107,23998.32369,29.91003349,3928.303909,1 +108,63391.61597,34.73926766,190.8892748,0 +109,21534.55122,44.31503802,228.335387,0 +110,28255.65251,35.51401737,2109.242798,0 +111,36496.13393,19.51571649,165.5060901,0 +112,41631.6663,53.04765477,106.0907472,0 +113,68762.41666,20.99124336,2796.752303,0 +114,30075.26492,29.23505652,2628.577923,0 +115,41302.67418,38.66061858,1379.913124,0 +116,39703.75943,47.46874099,2403.478216,0 +117,63161.09204,59.67511498,804.0924415,0 +118,63062.1421,26.58577848,56.16616439,0 +119,34507.52791,38.58778339,1793.750255,0 +120,27954.70777,29.90452167,1627.041405,0 +121,37369.38206,35.34194884,3783.601151,0 +122,43912.06274,23.82192118,7757.136789,1 +123,22766.7745,29.32590147,1429.401762,0 +124,21603.3057,21.37503332,178.333871,0 +125,61952.90669,18.47742502,3635.600589,0 +126,36116.36509,22.53588419,1494.984568,0 +127,26157.77727,22.82693773,2295.811656,0 +128,26458.3832,59.52298674,552.3981664,0 +129,69156.30377,53.4108625,7364.735578,0 +130,39441.44476,46.75389592,1034.758838,0 +131,60119.06581,45.07696923,1810.96046,0 +132,55613.48546,24.37712877,4255.252137,0 +133,37049.38624,29.42301855,6056.817214,1 +134,23122.06493,53.30953584,4263.493031,0 +135,48790.13243,32.47562106,5519.09604,0 +136,59132.68516,48.34499296,4575.527635,0 +137,55305.57483,53.58227987,8176.707165,0 +138,26037.46364,24.78310779,3293.250879,1 +139,64899.80503,38.11601668,4654.249217,0 +140,27089.12432,21.2076896,5029.488782,1 +141,45341.47464,22.56956836,6525.218423,1 +142,24865.79807,37.30975294,4439.116154,0 +143,28239.54321,26.19220966,4189.832568,1 +144,52730.0805,50.23778499,5706.325323,0 +145,28982.05815,39.04840987,2898.761824,0 +146,36221.26601,26.10150042,5094.670084,1 +147,33551.12437,58.85692749,4333.360862,0 +148,43891.35597,49.1538267,5792.906333,0 +149,45148.88572,60.52500645,6455.391772,0 +150,58481.01216,40.83291823,5380.560596,0 +151,69579.92921,57.75624316,10868.24147,0 +152,52743.30857,44.04851651,2684.700671,0 +153,65635.66153,51.16771448,12701.60348,0 +154,34559.90704,29.11218199,3317.529874,0 +155,60218.53153,32.47188772,3157.961082,0 +156,51689.54854,46.15419152,9881.976006,0 +157,47541.61434,55.23458507,1611.216597,0 +158,62905.79302,27.90965196,11423.9363,1 +159,65632.60458,47.10576675,12498.04045,0 +160,31847.85372,41.41633576,2913.769931,0 +161,27947.44028,58.34845518,5514.117421,0 +162,62246.72725,31.08188451,406.7207693,0 +163,40154.68857,60.5296832,6013.152874,0 +164,58627.55488,33.11565325,1215.65256,0 +165,33441.05107,27.87348619,5282.72856,1 +166,55603.7868,43.83947279,1411.13008,0 +167,31046.37897,29.29739875,4907.674084,1 +168,44708.09987,21.10877357,2390.850597,0 +169,23340.2707,42.8286153,2707.760939,0 +170,24830.18197,28.97024523,2046.68505,0 +171,31422.74739,53.89808021,1686.835902,0 +172,60477.23385,60.40210646,10711.7009,0 +173,26039.02149,49.39040223,2056.752382,0 +174,36186.84807,50.50675221,1130.735265,0 +175,39772.11873,43.72544781,5492.893689,0 +176,34730.16407,63.37623301,818.5084419,0 +177,23118.48331,57.58105032,1746.936559,0 +178,50072.84763,33.01527275,8088.568019,1 +179,67465.06239,23.61105385,1802.616994,0 +180,38625.63201,19.6300378,5836.563381,1 +181,45227.48283,26.72316244,5521.507405,1 +182,64901.89773,44.93881585,9589.833525,0 +183,40543.91354,51.46087562,6507.850191,0 +184,27793.26672,60.51690847,382.2489041,0 +185,61167.77482,20.58363144,10396.61815,1 +186,64619.66462,26.04209269,9704.782409,1 +187,37593.75787,54.01041531,7274.325628,0 +188,35032.6496,56.72462562,135.9316845,0 +189,58364.46498,55.59654948,5809.899,0 +190,56945.81041,45.55402051,6388.369826,0 +191,27204.84855,29.07209672,3827.893915,1 +192,21648.26103,52.58703992,3558.527262,0 +193,31077.85689,44.2215167,4452.330679,0 +194,42522.92241,53.86865108,6790.850263,0 +195,31769.24772,44.77438059,1148.221436,0 +196,35556.77991,23.77743318,6361.973438,1 +197,52908.82424,53.69563592,9841.080553,0 +198,35045.13141,28.65328366,2382.466772,0 +199,44488.16448,33.43120549,2751.088843,0 +200,41679.93712,53.66990824,395.0007751,0 +201,54619.9472,52.42442217,10780.27188,0 +202,38053.62313,26.20688032,6110.572792,1 +203,64718.66178,37.27649201,1485.079935,0 +204,43159.08497,62.44209669,4350.019897,0 +205,29445.5105,28.44567748,1758.881865,0 +206,25817.38988,37.94548019,4115.484719,0 +207,66356.85674,61.52484883,10725.48473,0 +208,56676.158,46.67896953,2278.554349,0 +209,61000.04277,48.62361021,2160.784908,0 +210,58906.25169,42.04934198,9290.575345,0 +211,49589.15372,42.77525588,2627.405488,0 +212,40141.60354,56.15141838,845.3663713,0 +213,31659.72821,31.92815368,858.511388,0 +214,62658.22163,25.46316007,3343.367161,0 +215,39264.4835,37.02775284,5255.788283,0 +216,46643.12648,53.40508337,6440.861434,0 +217,30515.37212,20.16187772,415.240435,0 +218,65077.32203,50.97913471,11061.81189,0 +219,60871.869,61.2601442,4844.172224,0 +220,25011.1039,36.21518966,3834.042782,0 +221,68407.18551,60.93758158,597.9440655,0 +222,43727.43934,55.19259935,1170.556334,0 +223,45788.7471,41.26194623,5894.041317,0 +224,65705.01082,50.92843185,1969.794134,0 +225,32434.70251,41.35317101,2738.440496,0 +226,58121.66858,27.30180023,7531.101249,1 +227,62498.50725,31.9096908,3312.877622,0 +228,26090.72588,48.07852007,4255.626392,0 +229,64780.93854,20.22810118,8402.415586,1 +230,65588.40342,22.91821226,7879.738136,1 +231,65743.70367,52.3005041,7724.571414,0 +232,37164.52158,47.29545476,1445.802189,0 +233,65176.52978,48.96321098,2365.28749,0 +234,34615.54217,25.51438965,6476.760852,1 +235,59079.46505,58.6383316,10326.08977,0 +236,56267.17164,22.48613604,7329.243164,1 +237,34862.82129,54.96487331,6040.772062,0 +238,60521.3641,45.42499301,8035.883173,0 +239,42276.78291,57.93069619,8055.305084,0 +240,38451.17771,63.42145549,3441.261416,0 +241,45985.10865,53.5338888,7382.056426,0 +242,51000.42244,27.80299751,778.7326956,0 +243,31523.10777,40.44616794,5174.570569,0 +244,28648.67675,18.39696983,1870.925253,0 +245,27514.42796,21.8976978,3400.910744,1 +246,27441.00038,37.39906989,1455.047602,0 +247,67709.24159,50.41293228,5136.819308,0 +248,38600.70719,44.72279622,2749.080191,0 +249,30950.29541,26.31019433,5043.148637,1 +250,27083.82287,60.66665852,3286.212882,0 +251,21512.74527,24.7795283,2453.376121,0 +252,34796.00356,58.48789988,443.6665381,0 +253,27089.39284,51.29419704,1851.311563,0 +254,25259.40163,39.73976626,4341.008082,0 +255,47007.31358,45.01979643,4069.402646,0 +256,20358.66502,53.61518031,1064.686918,0 +257,67900.22653,43.51430384,7902.742965,0 +258,54418.47099,55.2220663,5630.741221,0 +259,51288.55469,29.92074847,6536.966363,1 +260,28199.60163,36.66870417,3871.688902,0 +261,22199.61514,60.10481888,1498.390919,0 +262,50514.46963,57.37965014,2003.65357,0 +263,34414.24034,54.5301724,617.5387522,0 +264,37633.08743,29.42141257,868.1624733,0 +265,55235.50407,47.00526014,4910.547658,0 +266,45587.55184,62.02213807,8366.614268,0 +267,52757.79494,53.08221445,2321.206314,0 +268,41174.80813,52.33937637,2888.44471,0 +269,25685.5352,39.00918946,490.7429211,0 +270,28145.303,55.54762961,4805.971549,0 +271,52094.21837,40.84450776,495.0211992,0 +272,33552.38598,25.15961094,6054.244126,1 +273,37400.93377,50.10848668,1693.137378,0 +274,21605.72509,23.2381696,2828.308618,1 +275,57562.89174,56.60056735,8508.835399,0 +276,62288.53961,25.60217264,10657.10612,1 +277,22767.2642,45.12328068,1205.786013,0 +278,20943.04333,19.81963119,4098.11579,1 +279,20622.8601,30.4140331,3518.452629,1 +280,48436.66463,49.02784977,5851.409789,0 +281,27574.63418,57.64370906,1017.39616,0 +282,62889.36214,33.2456503,6525.151793,0 +283,37683.20049,55.58721086,7414.552853,0 +284,54974.4555,61.98420323,8922.199717,0 +285,56326.08667,40.40545522,4816.776074,0 +286,65670.88344,50.00469847,3950.870172,0 +287,50730.73339,41.97006679,1879.059662,0 +288,64184.91579,46.44703643,1854.239613,0 +289,66179.32411,48.12079915,3646.93786,0 +290,24969.5268,45.12099322,3595.501942,0 +291,54925.51827,40.80560311,554.4883448,0 +292,67879.24802,43.59720866,10433.47435,0 +293,67787.52676,53.36234044,9607.498847,0 +294,31657.6193,37.77866429,1448.071984,0 +295,36559.13503,19.71617609,3030.267241,0 +296,57787.56566,22.64466921,6339.850844,0 +297,42521.72601,47.70428875,2661.612516,0 +298,51935.18063,21.49550533,5649.452468,0 +299,45677.87613,51.69305562,2966.246125,0 +300,51363.59581,21.0219966,761.4224042,0 +301,27218.56103,55.17101996,4145.003587,0 +302,43677.62922,32.55303035,6739.858598,1 +303,21533.59551,57.90168346,1971.55422,0 +304,28010.19093,55.36689966,3971.155479,0 +305,51589.28275,50.31346489,56.99097407,0 +306,50480.95269,27.08039063,8831.184365,1 +307,43957.35058,21.14484884,5416.357798,1 +308,61878.34655,33.00635954,567.6687734,0 +309,60153.33697,20.30086013,6472.347007,0 +310,33388.58334,62.00167495,4551.876889,0 +311,41310.40178,53.57694074,4481.162213,0 +312,25576.95393,51.93226805,1922.656626,0 +313,51455.09845,37.2856837,9447.117157,0 +314,48134.15693,47.96967523,2075.596112,0 +315,51348.5273,52.43673978,1507.891341,0 +316,20532.82373,54.62323385,1897.780821,0 +317,33297.21402,46.57996004,3674.74134,0 +318,55858.54924,25.86653378,5630.444972,0 +319,43777.51848,20.0109277,3601.299685,0 +320,27789.51906,58.51913348,186.8280739,0 +321,36132.42388,34.29426042,99.4495914,0 +322,20145.9886,21.28278372,839.8390632,0 +323,63108.70739,43.19394153,5757.848995,0 +324,26581.61453,61.95337375,5090.392774,0 +325,62040.88963,62.04980097,7643.631046,0 +326,69958.70554,30.5360199,8755.691977,1 +327,38082.51952,45.51997724,4213.465259,0 +328,45183.05418,33.89557822,5953.453524,1 +329,36242.44796,39.41547079,5688.994849,0 +330,44527.2589,42.09009228,4588.472286,0 +331,40496.25582,20.10545872,4834.603798,0 +332,24698.66931,48.91255747,2427.650788,0 +333,60560.30553,49.75058567,1994.621134,0 +334,48018.21146,50.20413902,6120.090021,0 +335,30216.25196,26.56371653,2116.53731,0 +336,61742.23995,44.87260781,8068.319704,0 +337,47288.42667,62.42846686,4004.988852,0 +338,24658.89932,59.43650057,590.5980812,0 +339,64644.3481,58.84065675,9848.171449,0 +340,57517.72414,52.48606979,4536.857209,0 +341,52945.54779,54.63191519,6262.007945,0 +342,36366.99041,47.19141009,371.040895,0 +343,62113.72957,27.884415,11928.50986,1 +344,62279.5195,26.66646905,6801.405893,0 +345,61799.08496,56.95796104,5619.217604,0 +346,50139.74001,30.26781235,7758.799823,1 +347,69566.68435,52.96708771,9875.037183,0 +348,44897.48837,51.35806105,5732.399032,0 +349,22572.30276,51.01624042,724.1931885,0 +350,37123.07964,19.9466845,5659.509278,1 +351,68744.78865,60.73005586,5207.883117,0 +352,21081.19418,52.38283326,2395.16535,0 +353,58828.29212,32.40292043,5947.645468,0 +354,46706.45886,18.83033629,7084.263509,1 +355,32312.85338,28.15532047,228.3308036,0 +356,60778.76502,43.01302298,10021.04922,0 +357,30948.04155,42.7513536,3995.807295,0 +358,60122.01157,62.90960494,7189.350735,0 +359,43321.68112,32.28625435,743.867141,0 +360,47904.34124,40.03927024,6183.514146,0 +361,58597.38325,53.28803374,2588.490266,0 +362,66091.90591,24.2041407,8743.509701,1 +363,47316.70138,27.06419772,1940.674044,0 +364,40872.63977,54.94806156,5312.491706,0 +365,35154.49348,52.89921324,4037.719604,0 +366,32222.81881,61.81061588,934.4771331,0 +367,40447.67296,22.49292385,1072.192659,0 +368,48463.20455,50.52642975,8120.25809,0 +369,42843.09913,28.63178613,839.869024,0 +370,50310.42244,53.03869686,8361.7191,0 +371,57565.19996,37.73785449,5353.561654,0 +372,55066.18297,55.7392007,9332.702666,0 +373,46065.94821,52.8386392,4947.308728,0 +374,38309.58566,55.4291345,3545.723971,0 +375,54472.14476,59.245985,10836.38309,0 +376,58695.0944,29.77440963,1826.516302,0 +377,54748.91231,31.59685864,5438.093693,0 +378,46328.17192,56.84083064,7879.676208,0 +379,49633.32747,38.98900889,7915.313443,0 +380,66339.78388,35.59190521,2350.891508,0 +381,62650.71966,33.48406627,6425.365364,0 +382,27646.78005,56.31166878,3132.148692,0 +383,21437.61575,45.73140049,2563.960873,0 +384,50648.19844,56.51730671,7110.755833,0 +385,29670.67184,53.55019966,2928.984088,0 +386,20258.53866,29.11553162,2767.8373,1 +387,34475.21797,42.30791846,3162.133837,0 +388,28926.43246,62.06525128,750.067107,0 +389,20660.66895,49.36388109,1756.037625,0 +390,24987.93409,49.06510864,3946.898246,0 +391,29672.56081,51.01980481,607.9094842,0 +392,23241.59989,40.84775603,457.1966172,0 +393,24217.22876,23.51076748,2104.384323,0 +394,65574.09334,23.51304252,3031.246326,0 +395,55994.45879,31.1392572,680.6196961,0 +396,67369.33212,57.63423984,2299.418172,0 +397,23305.77149,28.21752876,4521.004312,1 +398,35195.46635,49.6584056,2836.988178,0 +399,27135.07262,54.8364598,1387.248801,0 +400,24037.16514,23.31157432,2469.364426,0 +401,51625.31323,44.80884119,4592.24555,0 +402,50705.76626,53.20582216,1096.967075,0 +403,58079.1569,18.66302679,11540.04581,1 +404,62192.46707,46.0507889,1863.891003,0 +405,62553.66841,63.92497558,4641.704785,0 +406,68147.95732,22.98439448,12307.56232,1 +407,27619.66141,47.54050593,2774.832781,0 +408,65330.19284,28.58998731,4030.803692,0 +409,26680.14584,47.76173998,1671.184924,0 +410,46104.59891,51.05635889,2342.472921,0 +411,44904.59764,44.20668666,4953.773599,0 +412,52934.59443,50.40298165,3248.627718,0 +413,43509.75776,18.07533586,7363.037639,1 +414,22118.35733,63.01594669,3928.121846,0 +415,56275.41002,30.24987142,2224.88416,0 +416,48630.97953,27.02167736,5862.833029,1 +417,64272.7,37.77801477,4929.878818,0 +418,24349.00295,53.75252283,3890.47105,0 +419,34332.31526,36.5013709,1225.720223,0 +420,64940.24109,43.94104124,8196.930726,0 +421,30595.74801,40.91149463,3495.069881,0 +422,53422.21625,28.18853052,7441.759617,1 +423,69995.68558,52.71967321,2084.370861,0 +424,48270.79624,45.30585103,6232.280399,0 +425,27028.15559,48.10959467,331.3643087,0 +426,23519.86609,34.39370686,2368.381231,0 +427,37302.0834,35.01540389,2366.17424,0 +428,55601.27185,18.8429929,10533.45516,1 +429,62678.64545,25.83939413,333.4413981,0 +430,41602.43398,25.25986939,7005.079292,1 +431,27533.00133,46.76592846,1551.420288,0 +432,30594.17656,50.0438201,118.3421421,0 +433,47846.9459,24.41835729,3713.262688,0 +434,55273.275,25.41639103,10282.99745,1 +435,23086.25541,24.84996033,1256.40116,0 +436,29621.27488,32.45542329,5575.253691,1 +437,47533.92095,39.95519407,6637.770871,0 +438,62519.18418,44.40997496,2324.547705,0 +439,50878.95904,44.96512582,3257.012629,0 +440,58580.95951,56.62695134,4317.715478,0 +441,69445.64945,28.81827377,10643.40418,1 +442,60929.17235,60.05877767,11146.07446,0 +443,35496.6655,47.00274607,168.0547853,0 +444,33572.4235,57.44221936,3369.377023,0 +445,55306.91435,20.14031182,5272.535014,0 +446,34141.92764,47.15114867,3371.66431,0 +447,40453.89095,20.70989283,890.9395353,0 +448,69088.77742,53.93562663,11246.48815,0 +449,30885.6922,55.15075882,5216.354091,0 +450,58683.22632,24.8449593,271.7344685,0 +451,60675.81216,39.9639062,11617.74891,0 +452,68460.68003,35.77560039,949.9566247,0 +453,63653.83991,27.51536888,8866.527185,1 +454,42522.57576,18.32612216,5036.25528,0 +455,54140.42913,30.88889273,7896.223766,1 +456,47548.36262,47.83910014,6153.936564,0 +457,24114.01226,52.33581555,3900.829601,0 +458,20686.23909,33.28052356,3052.576691,1 +459,21412.30861,26.38271039,2639.710126,1 +460,69391.1466,63.80067091,2550.265147,0 +461,32319.26222,42.93199308,2733.420559,0 +462,52862.94714,47.33139712,9754.152239,0 +463,48383.27615,39.7047263,2763.263955,0 +464,36430.5384,38.22744175,5855.185594,0 +465,44268.89401,27.93317102,6043.143106,1 +466,63806.32925,56.6321662,114.4999674,0 +467,46195.77717,32.41359859,927.0675939,0 +468,23743.16077,42.73457772,3254.74895,0 +469,22089.83748,21.29670327,2584.022038,0 +470,54707.28851,44.23788146,10255.19011,0 +471,23203.64719,58.56887607,749.1453684,0 +472,25342.25068,40.36114009,871.5300911,0 +473,31645.63282,32.16327128,5193.838197,1 +474,32306.8084,21.90630584,3603.364078,0 +475,61262.81632,49.41303041,5564.163603,0 +476,26388.7273,19.37152054,1191.332138,0 +477,53009.42543,36.07447938,3589.253506,0 +478,58163.54068,58.7474847,2237.927764,0 +479,38665.03393,55.12592175,6152.004833,0 +480,25289.04722,53.34272481,3701.537602,0 +481,66049.93403,29.3157674,13172.6813,1 +482,56282.98253,62.3698886,8215.558384,0 +483,35778.61523,30.62820738,5544.654684,1 +484,29174.24031,18.52862799,665.5770001,0 +485,55934.43256,60.75524976,5643.179899,0 +486,32256.86152,20.09639947,2809.322185,0 +487,68052.80692,28.75880168,1415.718263,0 +488,26957.05387,55.26487741,4172.988238,0 +489,48685.04202,32.53325603,9698.582169,1 +490,38288.07108,28.73543162,1723.399373,0 +491,42468.02083,28.62581918,1902.26561,0 +492,55377.77303,46.91822152,6882.873416,0 +493,54231.70279,21.27421064,10156.14231,1 +494,53283.25871,49.00469291,4065.218795,0 +495,52534.78548,47.18361948,3810.131842,0 +496,47847.51563,26.65183777,8494.016431,1 +497,59998.25327,54.30892681,4659.535976,0 +498,58684.51301,31.73226475,5415.817417,0 +499,49114.78793,61.48152255,6388.85036,0 +500,57179.40201,21.37312158,2991.967351,0 +501,69395.11648,23.95138858,11047.68434,1 +502,43963.73801,41.55384223,4481.436861,0 +503,66326.47247,40.98032875,5602.160022,0 +504,35886.72684,34.66834878,843.749092,0 +505,35578.23411,42.394597,3640.848886,0 +506,48689.00043,36.56309217,3859.471823,0 +507,56510.83536,47.30828614,9255.439649,0 +508,50275.89996,41.81982332,5541.821255,0 +509,56665.49409,61.64512274,11159.79317,0 +510,42912.09054,60.58219753,4550.122853,0 +511,22169.72922,36.97071669,947.1996384,0 +512,35919.80732,27.30412443,1227.109484,0 +513,61987.68527,27.63108779,2618.243037,0 +514,30044.68352,49.77406378,1428.439625,0 +515,61528.27242,55.90302305,10897.90548,0 +516,31196.49177,47.17878489,987.2615366,0 +517,66003.95999,33.07351468,11207.49523,1 +518,56960.67384,25.51799914,4856.483454,0 +519,41315.10789,57.52009412,1378.909057,0 +520,64913.34384,26.76631122,9781.326722,1 +521,32804.90449,62.29439051,4961.25568,0 +522,25789.2098,26.49416967,2410.277414,0 +523,31908.35431,38.25251186,1857.461578,0 +524,56050.30258,23.97382954,6870.83901,1 +525,66505.77569,25.61824062,6571.197021,0 +526,57504.07174,55.71713443,8107.267645,0 +527,44619.11149,59.85248724,2474.977159,0 +528,21158.93529,54.30391261,3562.308296,0 +529,22765.19092,20.58742742,540.6177247,0 +530,25052.82026,45.57399348,3367.701923,0 +531,61006.1073,54.18129557,5850.770691,0 +532,62321.24247,45.8902828,10649.07205,0 +533,49604.54421,51.94400881,7045.919202,0 +534,48433.37349,28.53199734,789.6333613,0 +535,57590.28328,19.49710268,7676.310663,1 +536,62691.70137,25.06437924,8244.7489,1 +537,51121.65687,58.52718075,6471.628202,0 +538,22516.54035,55.51892667,4267.451902,0 +539,60857.23505,37.39428701,10486.74435,0 +540,62908.35748,51.14682721,3213.898146,0 +541,49665.63384,50.31921262,2713.885075,0 +542,65322.80107,41.45419509,2739.71999,0 +543,20598.92656,35.77115432,3872.402468,0 +544,55476.65698,52.0892028,4733.50583,0 +545,26218.49485,18.41623623,3343.816358,1 +546,40794.87023,38.04052822,6519.43706,0 +547,53719.65111,42.89010155,1670.737893,0 +548,20715.53563,27.53032143,369.5277394,0 +549,57163.8524,53.54481969,577.5307824,0 +550,33751.20531,25.30187719,6494.184336,1 +551,44832.56472,32.17826296,1256.253538,0 +552,51035.63346,58.99497729,2889.880195,0 +553,53493.48601,21.87474639,5030.8288,0 +554,58205.68,56.83783815,10035.60302,0 +555,47439.94076,22.34841947,7896.356942,1 +556,47586.22771,42.27500753,3343.056276,0 +557,26100.85126,62.31916468,960.1372514,0 +558,45326.40367,59.36251247,5142.110837,0 +559,24391.75623,47.0350985,2198.144889,0 +560,53741.37102,49.72943257,6513.150125,0 +561,40053.72227,27.93848013,44.5272461,0 +562,53033.86413,38.45755969,10427.4705,0 +563,25176.50201,53.54340881,3064.718488,0 +564,31210.84702,54.10490667,3853.088042,0 +565,23532.2763,59.63373699,1077.8404,0 +566,63776.77079,43.81065864,6697.971583,0 +567,52278.765,45.92897162,4269.136035,0 +568,56015.81322,32.50931024,2275.763425,0 +569,56110.93994,62.82941483,9351.006131,0 +570,57856.80823,33.68215095,8824.164747,1 +571,30187.09186,28.15508425,4462.823258,1 +572,30786.87193,47.06810554,3563.319789,0 +573,22279.29977,58.90732761,3141.338536,0 +574,42476.26553,46.43822313,8334.182008,0 +575,58147.79986,34.05864485,3951.189747,0 +576,36266.21187,55.54236272,3206.927665,0 +577,39045.49716,27.43322056,1165.492158,0 +578,64467.80368,63.40058921,521.5757014,0 +579,36594.80667,60.91256134,3492.334022,0 +580,58797.76286,53.40343367,8892.963303,0 +581,66653.27093,19.88705308,5180.71186,0 +582,48271.49838,21.66234102,6077.680287,1 +583,30991.43192,34.01002602,4589.267265,1 +584,45446.51834,19.30469183,8474.982464,1 +585,37142.73889,50.30304299,161.2375511,0 +586,58320.80889,20.25760534,10033.49168,1 +587,24825.54068,54.8174662,3650.196352,0 +588,20511.42944,27.19626825,931.7900744,0 +589,48326.32089,35.65219864,7168.707002,0 +590,55441.35879,48.05859911,10768.74784,0 +591,60496.90792,33.94567162,1115.154587,0 +592,25296.15423,44.35608995,1320.462443,0 +593,50414.32032,56.19400321,2468.171999,0 +594,67984.04038,27.46528093,1642.969471,0 +595,50382.39977,57.09693649,9183.842295,0 +596,49413.29854,18.64785258,2554.044352,0 +597,61464.82064,36.40826631,5099.08746,0 +598,53784.04957,24.39355435,2761.85138,0 +599,35993.28793,41.8750019,901.9277107,0 +600,63402.00468,47.22342889,7530.767633,0 +601,40484.97132,39.28143317,1093.679203,0 +602,26168.01227,41.94116976,3040.98135,0 +603,60044.28152,61.31265439,6823.434443,0 +604,23984.55095,51.14126769,4622.275198,0 +605,40359.70119,32.24500797,1783.697326,0 +606,33583.89108,62.13075546,1251.867366,0 +607,68038.79202,62.94812935,10108.79585,0 +608,45652.05927,53.674341,5408.212129,0 +609,34399.20978,31.764889,6019.834423,1 +610,57628.43892,23.98656393,5021.639683,0 +611,24294.67689,22.26309561,4360.053009,1 +612,52218.88251,37.54275677,9792.091531,0 +613,50061.76774,55.36104188,6145.131817,0 +614,49352.27422,57.54215563,3362.774486,0 +615,21087.35554,49.31063445,3353.693571,0 +616,23812.25268,42.76555932,2716.655819,0 +617,49395.16649,41.08490913,5927.574676,0 +618,33338.94399,46.59851354,2929.851424,0 +619,29668.32072,38.6837404,2042.436463,0 +620,45936.5972,41.99401029,8525.231909,0 +621,55948.06772,40.30301538,8569.220573,0 +622,53239.50071,63.51511514,4606.156805,0 +623,43694.03444,49.51503554,5049.635509,0 +624,24078.0725,38.49162835,3276.139948,0 +625,50258.55302,22.54284077,1086.246165,0 +626,41816.65683,48.91721362,4534.575973,0 +627,36892.71622,54.44842476,6463.647751,0 +628,23886.56761,34.44297279,4440.419617,1 +629,48757.76505,23.07603499,1833.581051,0 +630,34601.68266,33.85052236,2430.101618,0 +631,52986.00455,50.42376288,4928.607034,0 +632,50740.95102,21.72135886,784.5773121,0 +633,53096.9914,36.35007538,2663.052609,0 +634,38500.00065,53.93069108,7571.682318,0 +635,41004.26236,55.84909201,1016.141008,0 +636,63585.36459,49.33992697,1594.972682,0 +637,31823.68106,30.98355705,2290.430342,0 +638,26242.63362,32.59683185,1801.228195,0 +639,63531.24599,19.32910789,6917.508435,0 +640,64751.14654,53.63820349,2289.851251,0 +641,31091.2763,50.89554304,4071.083034,0 +642,66871.26736,62.68936364,3614.268185,0 +643,25098.65283,51.64706285,2611.848092,0 +644,33720.58922,47.24662629,1365.952209,0 +645,28182.52329,25.52961036,2285.956538,0 +646,27334.56971,42.67119449,2963.794432,0 +647,68694.84318,23.08141739,12731.89464,1 +648,46195.62167,26.62719845,2888.633728,0 +649,34488.20985,27.13153021,2156.314406,0 +650,57827.6631,23.97296825,10816.75901,1 +651,20346.46905,35.71607365,656.0331879,0 +652,60480.9758,53.42868783,3216.094541,0 +653,51915.67978,44.10910349,2282.911022,0 +654,54625.50698,31.69645567,8619.745177,1 +655,48305.42709,55.2125357,4833.47747,0 +656,28577.96451,21.42016018,1639.225639,0 +657,53400.82701,58.08168841,10418.19298,0 +658,43414.48789,44.45336282,7170.946724,0 +659,47526.23413,57.21959192,8957.330544,0 +660,46082.07216,55.15846717,2921.235379,0 +661,32195.59252,62.20165852,4980.013585,0 +662,49067.09129,60.54459807,7258.968492,0 +663,21293.47713,42.40494033,1368.691922,0 +664,52100.91739,23.18144363,4767.277192,0 +665,48334.38778,53.36775446,2234.443137,0 +666,58507.62355,48.97744804,694.1351678,0 +667,27521.04034,35.08659729,2699.851346,0 +668,63914.22537,26.34974189,139.3145719,0 +669,28598.83265,52.53369854,524.2010921,0 +670,23298.46675,48.65145986,1741.183919,0 +671,35697.55414,51.38821886,2907.958272,0 +672,40376.16358,38.92128904,3901.937984,0 +673,56534.96684,27.80794148,2161.083752,0 +674,36088.93861,41.71775901,6222.415273,0 +675,34158.63397,29.42114243,2911.408067,0 +676,29732.05762,38.87671243,3485.018026,0 +677,41736.20154,34.59649188,7602.613055,1 +678,42236.45609,24.6867331,4749.068675,0 +679,28796.85084,44.62864841,706.2289942,0 +680,55097.38848,33.92942424,9342.479427,1 +681,40916.56415,48.31974071,5219.804028,0 +682,20908.3351,28.81852198,3133.624447,1 +683,57999.77239,62.77011063,859.5892942,0 +684,57746.58159,63.62530548,727.194665,0 +685,55116.23451,41.46888524,10284.60679,0 +686,57765.52116,43.88730905,5445.22266,0 +687,45200.9928,43.90542902,7335.962568,0 +688,42435.18949,51.48952681,2766.280914,0 +689,46365.57352,41.85261305,5443.276307,0 +690,57187.70089,59.47191821,9390.672261,0 +691,66539.9276,57.70555929,12129.08223,0 +692,25244.7267,53.3790106,1278.999504,0 +693,54780.34561,61.38897114,8134.220408,0 +694,59253.12146,36.92041154,7327.283577,0 +695,48540.34154,21.23915762,1012.934993,0 +696,30415.10508,22.98363585,4362.083152,1 +697,48768.69924,25.92502563,500.5991056,0 +698,52299.21808,18.30974563,7880.685807,1 +699,42242.48912,34.22076686,2070.379381,0 +700,28218.96527,42.62439388,1305.082433,0 +701,40208.13186,61.37191328,459.0346888,0 +702,61419.67284,30.65182339,9921.672387,1 +703,51282.50524,26.55138677,8445.385343,1 +704,36017.90275,43.5236232,1526.392476,0 +705,57575.00979,33.80013512,9857.22995,1 +706,53330.76714,42.3772463,2343.497556,0 +707,39834.51984,63.31227526,699.9557764,0 +708,62469.42837,24.26485536,7286.550391,0 +709,40334.61673,45.88654158,6808.869955,0 +710,47542.8027,40.87333755,9448.209721,0 +711,55883.62286,27.37033802,974.5630674,0 +712,29163.01588,43.95617132,1469.129704,0 +713,47786.14106,29.7081893,7181.478553,1 +714,29736.3105,35.29839844,657.0484089,0 +715,50831.42753,24.35160252,9572.586884,1 +716,62030.046,46.53578454,7572.567589,0 +717,54049.01274,54.62035318,4569.647911,0 +718,34336.01759,35.83065171,3441.644524,0 +719,31895.71531,48.18590728,3423.346172,0 +720,51894.5401,59.0037683,6579.534007,0 +721,37616.71086,53.44466025,5732.240108,0 +722,22076.948,56.99543936,3948.143344,0 +723,56252.95371,57.27829057,7327.070282,0 +724,26316.75849,37.217654,923.0284413,0 +725,23120.87961,40.29672232,1417.846522,0 +726,39033.03271,59.67702219,5757.890479,0 +727,32420.81815,32.36179216,1494.212974,0 +728,68827.24433,25.30253079,1049.175477,0 +729,58092.20489,41.81365235,5277.74042,0 +730,43538.85612,46.32941211,8523.901116,0 +731,64040.48418,59.14480741,5408.727767,0 +732,34395.22922,25.54822433,2089.7325,0 +733,57405.51493,45.64443499,6914.75154,0 +734,22581.13397,40.54886181,34.28510582,0 +735,27952.94598,42.09749811,3965.251974,0 +736,54022.91284,26.5610123,10641.45144,1 +737,63546.16476,44.41273214,6170.239116,0 +738,60713.4303,56.03160353,396.2336776,0 +739,44519.32947,32.39165985,1446.468103,0 +740,40997.79899,55.58120391,7908.331843,0 +741,63661.38333,25.59552438,6095.308749,0 +742,34429.14674,39.7149896,2240.277404,0 +743,29181.86143,48.24064781,2529.612969,0 +744,52510.43824,40.27914024,1858.30824,0 +745,37536.34724,25.85667757,2634.358585,0 +746,35683.74495,44.49787917,4337.825559,0 +747,45622.29071,41.63254532,528.1812501,0 +748,67385.40318,29.03367936,6747.232379,0 +749,69411.79253,47.07372685,12176.78244,0 +750,48322.51407,29.26263398,7732.696396,1 +751,40836.58881,22.16826291,6994.487801,1 +752,38035.95133,60.65521047,4298.705028,0 +753,42696.97137,44.52967068,222.1964386,0 +754,24181.69479,22.30012538,1529.018868,0 +755,33194.40264,51.17971212,6615.387858,0 +756,32541.46153,34.40508616,780.8328568,0 +757,38381.41306,54.08337144,322.7241556,0 +758,25921.91253,58.42607932,5104.746789,0 +759,58810.97173,22.10938059,9099.724338,1 +760,63025.74408,56.56693154,2956.977746,0 +761,29954.00451,61.83684471,5774.07427,0 +762,40641.52302,37.66419864,5042.326368,0 +763,43940.9107,38.30598195,2855.379187,0 +764,65166.97287,25.65628186,8859.087469,1 +765,58820.38206,30.75231565,530.6578241,0 +766,50719.76308,43.20724465,4770.937668,0 +767,46766.59592,47.77517095,2383.407757,0 +768,67520.7596,45.41562414,13041.77945,0 +769,28386.25355,31.12533241,1718.943782,0 +770,68276.03076,34.51488127,4842.07796,0 +771,30731.72628,40.38884294,1129.562412,0 +772,30012.25109,54.94011866,3972.151405,0 +773,38075.31877,53.10735995,6928.943621,0 +774,55932.39657,44.39262234,4876.366909,0 +775,27966.24445,53.70027324,4445.203178,0 +776,53825.53674,49.71390438,5272.804792,0 +777,65451.49652,60.27638934,8129.048931,0 +778,39473.99586,42.30125384,6034.153228,0 +779,42344.80871,47.41810839,6800.246806,0 +780,36112.87441,60.5793527,3737.212187,0 +781,32720.5048,33.80450352,4367.26495,1 +782,27973.82656,49.67421964,403.4021354,0 +783,21306.03312,35.09416354,3791.023528,0 +784,36029.30158,52.64062442,2928.100439,0 +785,48457.96355,22.34492363,8108.172683,1 +786,46038.51066,39.03867278,6868.987805,0 +787,34247.15902,34.70098954,6458.790585,1 +788,64247.615,31.60316207,4513.203694,0 +789,62109.76709,41.24090602,2816.430158,0 +790,21481.80379,19.95945231,1137.657891,0 +791,20762.47447,25.32912274,2385.224837,0 +792,33756.52723,40.56759555,1169.835925,0 +793,54325.80727,29.63636931,6978.525057,1 +794,33197.8078,59.48684823,3993.146866,0 +795,56846.47423,30.28092755,5268.227475,0 +796,26542.93109,45.82942652,4233.089586,0 +797,53200.54815,59.6917193,3090.473119,0 +798,38073.4069,32.21450809,2284.005677,0 +799,43937.21904,56.40968222,3213.541963,0 +800,49284.81941,51.93972912,493.589997,0 +801,22869.32345,25.9064452,527.5515684,0 +802,60113.34254,40.77430558,8253.384569,0 +803,23613.25569,32.4735058,2469.234585,0 +804,68755.09442,53.22813215,10990.53375,0 +805,26449.32829,46.47915325,2952.123152,0 +806,42855.41611,47.12736998,4923.814846,0 +807,25686.77894,35.85071487,3728.397031,0 +808,67125.64924,36.05850519,7482.067369,0 +809,27427.78945,59.70451918,719.9466646,0 +810,37145.57306,53.19827894,1510.735507,0 +811,41702.60077,41.94405372,6105.727929,0 +812,20710.77596,49.55726981,3960.710873,0 +813,39124.16436,44.5571086,401.3267334,0 +814,32834.64674,60.58021867,4184.578203,0 +815,26267.2214,58.79376696,1136.117271,0 +816,41254.2282,28.94820475,6993.049441,1 +817,38268.6966,30.67684984,2522.057185,0 +818,37087.26876,57.5763008,6391.153194,0 +819,38458.13304,55.85685407,3644.30607,0 +820,40185.77567,31.00076808,1002.340574,0 +821,65481.94555,45.03857624,10614.24849,0 +822,57426.68048,20.1188451,2461.974406,0 +823,47903.31425,46.16901477,4283.226974,0 +824,34222.18775,52.24667845,3582.151364,0 +825,28481.2656,47.42132836,5302.179943,0 +826,43069.65215,41.24003469,4091.561292,0 +827,33093.96186,33.40317391,3852.992444,0 +828,61363.85606,62.13637386,9636.804731,0 +829,68100.73562,47.75294027,8124.59898,0 +830,50551.48034,56.7655671,5262.616088,0 +831,54421.05401,22.96153355,6229.836019,0 +832,32152.45974,57.48695513,3550.584889,0 +833,40230.97571,58.79409568,745.1947491,0 +834,53483.374,29.18999789,1459.668599,0 +835,65137.93776,42.13310957,10352.18177,0 +836,29496.59413,54.66582086,2216.975334,0 +837,45181.93371,48.0968023,2243.153992,0 +838,24994.7782,34.72335974,51.64026024,0 +839,54820.97401,20.56039647,10070.94905,1 +840,62955.60829,29.54950978,207.5438178,0 +841,52956.24608,25.14710192,959.0972148,0 +842,40366.20324,32.07200804,7410.792024,1 +843,60005.01013,40.19488899,10677.66802,0 +844,37598.38508,54.66392931,3641.808411,0 +845,61323.0009,60.16601647,8699.946682,0 +846,21243.9323,57.86806022,3438.979277,0 +847,62111.43441,25.97645859,499.2085782,0 +848,56524.87881,54.91097151,5296.940273,0 +849,51718.13696,34.35049974,1036.616804,0 +850,43205.63175,23.12587725,4835.274657,0 +851,26934.19744,35.9790102,4113.299167,0 +852,68966.82256,54.39248814,6690.635338,0 +853,31527.3472,59.02264656,2062.719158,0 +854,46839.06109,28.73335871,1498.200316,0 +855,32151.29686,42.91491157,4601.940086,0 +856,40831.80192,47.1495458,6429.593688,0 +857,30868.80482,58.13656775,4618.392184,0 +858,62988.82643,32.47461294,6924.901569,0 +859,65496.76748,61.95993475,11805.55577,0 +860,63032.62627,24.78843756,390.3358609,0 +861,27287.07454,18.69579873,4509.881422,1 +862,44299.37174,24.37145815,5154.909843,0 +863,44091.34923,30.48523032,1664.104927,0 +864,26617.03032,28.61650924,2727.241681,0 +865,21856.23353,47.72276785,1500.653745,0 +866,28072.60436,54.14254823,1.377629593,0 +867,35950.48845,35.47184697,2664.925675,0 +868,28982.11236,35.26825118,1440.499168,0 +869,51790.72645,41.15087779,1281.035729,0 +870,65000.81962,21.69969953,1114.914824,0 +871,29761.04601,21.85429135,3748.258124,1 +872,23081.45074,53.89681841,257.6612015,0 +873,60016.74099,22.73860251,1522.646768,0 +874,54619.15536,53.59786282,901.2777768,0 +875,66274.2081,36.37462344,10257.91839,0 +876,49380.65863,45.47104991,5425.280945,0 +877,46283.06746,48.28858511,2166.1231,0 +878,25554.69852,42.79692147,4229.914353,0 +879,36680.18192,22.14626261,4849.333785,1 +880,30383.67633,46.8319496,2153.607725,0 +881,67730.4437,26.30314698,8881.583636,1 +882,36446.72414,40.61685061,2927.675444,0 +883,33648.73899,60.97094456,1498.161255,0 +884,53852.79954,42.78285555,2089.909464,0 +885,61298.21867,48.28503024,9399.504602,0 +886,69465.74696,20.58523169,7983.705373,0 +887,39102.04171,29.30086538,4200.697505,0 +888,29366.58233,22.48404853,4049.253865,1 +889,67949.73807,34.47967882,1790.348617,0 +890,29468.85918,22.78963669,3703.953047,1 +891,56839.4019,36.55239093,9004.801714,0 +892,38277.93687,44.90919805,7405.80321,0 +893,49664.27072,39.94416069,5571.456364,0 +894,49972.01083,32.39698399,763.9541159,0 +895,27356.80095,63.48787362,2983.583322,0 +896,36840.60366,36.67458349,6557.940331,0 +897,51438.81407,46.01234316,6898.783719,0 +898,40614.72205,20.93267159,2649.695356,0 +899,56738.63732,63.37394217,3210.807048,0 +900,68004.68622,41.53109727,2698.047781,0 +901,44458.63729,52.08290527,1456.234944,0 +902,66801.19751,19.13513823,288.6467693,0 +903,48991.85368,18.6213071,7453.264268,1 +904,69430.93662,58.94091428,2648.220452,0 +905,27989.1111,27.80092017,1770.818279,0 +906,67675.80477,37.74039569,4396.076877,0 +907,47985.72247,33.55977398,8801.610127,1 +908,43388.20947,35.70435679,7007.154253,0 +909,63182.45567,25.58638213,3493.224567,0 +910,20568.89131,25.85385679,2257.064782,0 +911,25833.71723,19.20759964,3716.254685,1 +912,23087.3014,37.61963726,423.4183995,0 +913,36124.71783,25.05472696,6485.05748,1 +914,57330.61941,44.4456513,1058.039202,0 +915,47240.25312,55.00972136,4286.345614,0 +916,55730.62923,55.15643796,9286.357545,0 +917,61660.40132,48.89875823,1684.526564,0 +918,49746.88744,29.36146193,7354.129523,1 +919,23973.68759,55.28829775,95.46072238,0 +920,28085.4796,45.03212598,4431.280471,0 +921,33585.47474,60.37738544,3933.883012,0 +922,44179.3851,51.30649189,5888.375781,0 +923,56025.41973,29.39644446,4341.626699,0 +924,49369.70415,51.37341727,109.3796228,0 +925,26889.36474,62.62510846,675.7120311,0 +926,30873.21764,38.95273955,4076.87675,0 +927,30608.94324,46.47670398,2632.551811,0 +928,54878.08965,42.88355929,1504.473462,0 +929,32423.80685,63.18998659,2961.952368,0 +930,46608.36902,20.40499151,1521.868405,0 +931,65689.1897,28.10870743,255.072656,0 +932,49054.86027,54.06866362,1102.240361,0 +933,20310.57756,54.26474774,1279.113098,0 +934,66423.39933,18.87435711,1066.214601,0 +935,45783.15475,63.88504374,7492.90982,0 +936,62887.76267,42.8418414,6849.484223,0 +937,51088.21078,52.08587159,9097.112036,0 +938,66217.94485,19.08162361,745.0760945,0 +939,62799.75061,35.36149204,6752.586071,0 +940,45789.48752,36.29805129,4545.157459,0 +941,59727.40599,50.24148795,5203.325181,0 +942,35513.58955,60.80701767,6983.360741,0 +943,29178.97759,63.93073469,1664.386062,0 +944,67501.69225,49.63745902,7589.75999,0 +945,66255.02953,28.96002495,7475.212282,0 +946,63558.86409,36.35685466,9282.927735,0 +947,63441.71236,18.67128938,3119.412678,0 +948,64983.15424,27.29197161,9109.774342,1 +949,56946.64594,55.40901375,11175.84107,0 +950,52349.87246,35.52249918,5181.848501,0 +951,31473.45878,27.99340911,797.3459721,0 +952,59267.3392,34.91269907,5085.311919,0 +953,66809.17325,31.05454812,1316.187128,0 +954,48083.31155,39.15730598,9193.095264,0 +955,20629.3473,28.30686155,3310.410118,1 +956,25363.33106,31.39079116,3946.001447,1 +957,28873.67417,62.3285863,2224.469765,0 +958,41430.85526,33.68956136,5719.278116,1 +959,53612.13123,23.28296645,5976.896568,0 +960,51555.74026,57.26359177,9217.688669,0 +961,46564.3789,50.65129969,599.830324,0 +962,61200.42748,19.22777832,406.8518612,0 +963,29307.32077,61.16495696,481.8426971,0 +964,67687.18308,20.8043048,10506.32803,1 +965,52565.06574,55.69652935,372.9742533,0 +966,52920.14801,20.99096653,9521.769942,1 +967,34981.36783,23.48770889,5502.736031,1 +968,65210.8371,27.52843972,12607.95166,1 +969,60016.07961,54.31724029,2857.007414,0 +970,23066.96468,33.091353,1933.353568,0 +971,52603.87864,43.89546653,2043.089553,0 +972,20111.36326,53.49539456,1745.371922,0 +973,32759.70028,43.88045936,5211.32563,0 +974,30578.02016,55.36616174,3010.35024,0 +975,21211.58939,32.65119825,931.7810522,0 +976,53746.32658,29.35028859,9534.660206,1 +977,45214.10922,18.2999804,1779.727735,0 +978,58465.0497,20.12688854,11417.06009,1 +979,54422.97349,58.57139504,444.6137769,0 +980,62842.06439,62.19707882,107.5972315,0 +981,53005.13229,45.68722047,2539.336749,0 +982,40749.02818,26.85401291,6207.186165,1 +983,49804.41083,20.03986423,7235.194717,1 +984,37277.24612,26.63314682,6289.256076,1 +985,46883.20654,30.39988989,6342.567909,1 +986,31763.3692,35.60251728,3489.404122,0 +987,61013.18158,24.70761897,1791.542962,0 +988,41285.3589,22.91107059,532.1002558,0 +989,39133.89186,21.60323147,433.4584179,0 +990,62171.80256,24.2437831,1035.462496,0 +991,53638.64595,44.02737436,109.4788536,0 +992,49264.58489,58.11954711,3051.574267,0 +993,63114.49699,48.35108283,11890.75719,0 +994,58165.50622,45.72915357,4155.723767,0 +995,43029.80326,27.21015742,6894.165381,1 +996,21593.62266,51.54892278,458.0937244,0 +997,49104.76824,35.53851733,9452.217947,0 +998,65776.23241,39.79819134,2805.863745,0 +999,36192.14945,21.40240262,7236.17393,1 +1000,62165.86119,19.6025431,4739.948954,0 +1001,50793.35572,41.60188645,421.6403796,0 +1002,62422.20379,32.14522141,2841.633423,0 +1003,63166.99496,56.51003993,4058.789534,0 +1004,23717.56785,49.32576952,1530.090242,0 +1005,66797.66467,21.38042855,11921.19954,1 +1006,30272.20362,19.13244649,1440.072549,0 +1007,55741.19569,52.62685289,3181.780519,0 +1008,30742.57971,26.44933684,5685.653641,1 +1009,20491.56433,35.13483691,1579.168249,0 +1010,35620.41863,40.82467405,3611.295903,0 +1011,50206.13372,33.03111152,5826.462898,0 +1012,67935.45387,60.9422627,8267.326053,0 +1013,59223.3966,22.93963515,3901.402085,0 +1014,32657.26868,32.81218796,1796.270503,0 +1015,55931.65458,23.44133307,4053.519938,0 +1016,23694.77887,22.86428448,764.29719,0 +1017,44324.28637,23.18086641,2672.692026,0 +1018,34735.49175,62.35895581,1402.217854,0 +1019,67064.34474,22.58360992,1091.624816,0 +1020,42761.49268,45.04937391,610.6578471,0 +1021,49517.72233,31.5493175,7337.950431,1 +1022,54372.18266,29.97711781,839.1250812,0 +1023,29941.96837,48.35844947,3170.045654,0 +1024,68414.12078,51.04678129,6154.052457,0 +1025,23891.24457,51.02920468,3475.905423,0 +1026,47187.57155,24.22704766,7933.469449,1 +1027,39819.92094,63.38479701,3577.44769,0 +1028,50632.27924,53.62329948,1262.356066,0 +1029,39970.21125,40.36811516,7867.616836,0 +1030,55176.1396,49.4559101,7822.936091,0 +1031,50533.57195,56.63106428,117.7125869,0 +1032,52983.87446,42.58806976,5567.941087,0 +1033,31187.66993,30.99961612,593.1247798,0 +1034,34909.98223,25.56874133,2852.371795,0 +1035,53810.84766,51.43297298,9154.477015,0 +1036,55478.96737,53.76292004,6227.541774,0 +1037,60394.09487,57.68642247,8293.576747,0 +1038,36845.73868,51.93947954,1790.013566,0 +1039,60264.94065,54.72136343,2241.388144,0 +1040,52981.5086,18.30621644,3759.937234,0 +1041,50222.76242,21.42271292,8734.740617,1 +1042,59256.55596,38.57894462,9812.978717,0 +1043,43203.41422,40.90172418,7730.727575,0 +1044,46288.75641,23.59003818,6053.791581,1 +1045,58176.15493,52.17576009,9852.14111,0 +1046,25631.43473,47.63557696,4778.700543,0 +1047,58977.99765,30.33098269,9442.01161,1 +1048,25048.01599,54.65677518,2341.367858,0 +1049,33436.48901,34.66914689,5473.985551,1 +1050,23787.36705,36.3117126,3041.552908,0 +1051,69456.56777,48.05355678,13190.36589,0 +1052,65447.61161,39.63135194,3269.534327,0 +1053,68743.35318,56.38525158,2290.204289,0 +1054,36052.5776,49.49996087,2830.179862,0 +1055,24820.79247,38.24401685,51.94924278,0 +1056,26046.38417,54.62546358,4669.457353,0 +1057,60850.80244,59.99025632,7206.852593,0 +1058,69929.011,51.39444845,12427.8357,0 +1059,53298.49615,56.90970733,2106.709791,0 +1060,48818.38232,49.29612194,2312.421777,0 +1061,38042.08416,32.83899402,3495.856306,0 +1062,42119.82271,60.06420183,1930.566532,0 +1063,62247.87974,39.22965562,1870.715089,0 +1064,62252.08816,28.24617586,1699.680972,0 +1065,36973.08569,38.28030326,4144.448144,0 +1066,54217.23678,26.62937737,8836.775689,1 +1067,44218.76632,58.57925853,1693.920179,0 +1068,33274.05027,23.95343526,2244.883109,0 +1069,54656.54904,18.39382955,9911.134963,1 +1070,67593.51708,25.40544564,9864.078027,1 +1071,39472.70725,42.60886077,596.4811795,0 +1072,30572.44686,48.65184248,1847.09425,0 +1073,50447.69963,58.09854003,2443.768915,0 +1074,49198.65266,49.1924227,483.6201677,0 +1075,53768.22821,25.37750388,3696.953244,0 +1076,52809.54629,61.01331918,6276.830737,0 +1077,38011.72665,19.05789168,4625.193378,1 +1078,58910.29177,31.01396195,3671.923094,0 +1079,57914.73107,50.61159971,6715.857908,0 +1080,39494.76692,28.5471422,3544.156039,0 +1081,45918.87525,38.64211962,1910.329531,0 +1082,55649.05588,19.66450149,7660.346171,1 +1083,27136.6288,18.83362032,2253.190253,0 +1084,62724.63612,39.83537661,9255.137755,0 +1085,32921.84858,43.73305267,2553.212778,0 +1086,28482.64955,19.78378813,329.4500422,0 +1087,44170.22174,24.47037064,2168.751735,0 +1088,60664.3716,22.36445737,5873.410979,0 +1089,64501.93043,33.3579469,12147.31422,1 +1090,28237.51739,50.01555209,2728.189944,0 +1091,67420.59545,21.18529406,3668.994784,0 +1092,55642.99339,38.91090684,2841.697982,0 +1093,56086.05809,34.57920217,3990.85076,0 +1094,57676.73918,20.66561699,10504.66817,1 +1095,62535.63285,39.19407554,9490.26419,0 +1096,60686.76857,48.39930849,10614.13095,0 +1097,25032.30094,46.31058897,680.9047822,0 +1098,22228.34529,33.35945709,2187.213337,0 +1099,41435.15375,34.92571649,3702.171428,0 +1100,43955.4094,51.55828607,7833.477761,0 +1101,60063.69309,59.11464434,6766.294181,0 +1102,34635.74475,18.9473467,4859.235287,1 +1103,63944.32373,32.5243454,12213.94934,1 +1104,35403.42733,34.64541582,2929.359704,0 +1105,53654.07937,44.13723421,6587.775556,0 +1106,23508.23073,52.64034902,4622.841065,0 +1107,61869.46603,36.22730418,1040.493673,0 +1108,20674.89708,23.99988287,299.8251378,0 +1109,22127.92411,61.18878265,1777.828551,0 +1110,27408.72961,37.69173185,2591.028947,0 +1111,60720.7961,38.82036029,3278.179727,0 +1112,34760.01932,34.26030186,28.88253444,0 +1113,23057.36392,46.97181129,2487.165182,0 +1114,42380.99506,35.71681219,6832.684817,0 +1115,37887.54939,24.4157261,5061.777831,1 +1116,39988.74074,54.26870557,357.0881242,0 +1117,25026.50564,62.90692234,3845.741849,0 +1118,43588.08143,40.49564678,6453.057979,0 +1119,20897.42669,28.0293199,2940.42397,1 +1120,24904.62467,53.3197898,3376.907465,0 +1121,66068.63504,35.91878387,5626.86934,0 +1122,36126.23109,40.70791186,3805.802721,0 +1123,23626.72679,34.29335345,2173.76769,0 +1124,30200.24326,62.78257014,4871.677576,0 +1125,65569.78524,62.23215892,12494.26726,0 +1126,20617.26101,46.51750698,2224.068134,0 +1127,25817.45462,21.63047036,3682.861931,1 +1128,21448.82799,31.79518831,1989.182976,0 +1129,69370.17764,52.3746293,4605.918773,0 +1130,34145.79955,31.40079893,4074.952591,0 +1131,52651.25686,57.32024618,6529.019522,0 +1132,40069.33838,43.31346189,3646.051618,0 +1133,39246.54489,48.32205561,919.11464,0 +1134,56233.78954,57.99108565,9642.092538,0 +1135,49264.26833,19.00652627,801.779606,0 +1136,30451.63616,42.19713668,475.4205917,0 +1137,28726.9963,34.75143776,3675.833415,1 +1138,20113.25349,30.13257556,2507.64971,1 +1139,43434.77543,52.20588011,3672.109828,0 +1140,59208.71608,30.93115193,11479.43781,1 +1141,69310.95727,42.11060918,1590.325804,0 +1142,60567.42444,40.04122249,571.9329349,0 +1143,22048.89504,53.7982525,4199.024356,0 +1144,66733.71025,52.97784361,5366.640793,0 +1145,22209.00951,22.00626001,4096.783714,1 +1146,49032.66241,54.5560719,1777.953131,0 +1147,26558.36106,57.83336484,22.32793318,0 +1148,49255.45797,36.61814758,4951.915771,0 +1149,30218.15123,48.02147268,5914.516662,0 +1150,56317.08282,24.6534823,8045.440953,1 +1151,53825.43058,45.35669022,431.4501612,0 +1152,34927.99361,54.15294718,1957.057929,0 +1153,53287.38502,59.55992485,4432.665444,0 +1154,32032.55674,50.11743705,4582.938274,0 +1155,48405.72681,47.93288261,3766.614435,0 +1156,46132.91405,26.90939873,3216.491255,0 +1157,29049.07149,57.78255455,2562.695554,0 +1158,68550.68786,19.36118878,3879.672652,0 +1159,47474.8196,37.87464495,5083.728272,0 +1160,50021.65541,23.81667911,1054.268085,0 +1161,64089.13191,37.31044758,6272.78845,0 +1162,28451.70557,41.60107543,1042.850376,0 +1163,58132.47127,29.38094985,5491.035602,0 +1164,30961.16614,32.11428662,162.7955961,0 +1165,64162.64961,53.85556307,6938.01252,0 +1166,67470.11702,52.23263736,12715.29472,0 +1167,68263.76624,42.64295351,4124.330404,0 +1168,42889.33416,57.50669619,6340.708855,0 +1169,20155.79236,41.92236196,3489.957148,0 +1170,58178.61457,49.69279455,10948.49949,0 +1171,45735.45569,52.82103724,2944.537354,0 +1172,30037.20313,38.68492023,1247.012791,0 +1173,64392.51221,37.80218224,4513.243712,0 +1174,26291.3758,52.40154262,1094.177529,0 +1175,36008.381,20.62621639,3709.304431,0 +1176,54953.97966,44.69223602,365.6461852,0 +1177,28753.32549,49.40348027,4990.369091,0 +1178,41993.98432,36.19281642,6644.344214,0 +1179,56696.4586,57.52025339,9686.630307,0 +1180,51906.04616,36.5730408,10235.27261,0 +1181,30939.39338,47.8934448,6115.822333,0 +1182,38520.72397,56.67372097,4176.949955,0 +1183,33489.03986,25.97104402,3581.655047,0 +1184,52836.00643,38.25136318,5671.644328,0 +1185,51733.28751,24.91495145,7906.141179,1 +1186,41273.7715,32.09039538,3299.885072,0 +1187,68223.68431,28.99041509,7364.001945,0 +1188,28222.87891,40.33136779,613.2406201,0 +1189,21921.36108,62.3272301,1901.143922,0 +1190,38852.93302,27.05029416,7513.182864,1 +1191,59621.36764,54.15061886,7014.622708,0 +1192,41377.7456,45.86166157,5324.048185,0 +1193,54405.62497,57.1412841,6253.206677,0 +1194,60103.01157,56.05377209,2632.265613,0 +1195,67528.65421,52.88850155,7877.415131,0 +1196,61156.93738,31.80242595,3250.006084,0 +1197,42955.6946,45.41622917,2962.825186,0 +1198,46923.04677,36.3395338,3107.883782,0 +1199,24951.25749,62.04114048,2544.356003,0 +1200,26267.52942,34.49638622,59.46916335,0 +1201,64603.92088,33.06183178,11264.69116,1 +1202,34667.0204,18.85318928,2827.289402,0 +1203,66008.39707,19.42742577,9189.611514,1 +1204,45840.20762,32.27027963,5299.239719,0 +1205,32188.01624,49.42886416,4659.953325,0 +1206,50289.66475,24.0740542,6127.381688,1 +1207,36837.53085,54.72850399,1598.183569,0 +1208,28852.03381,44.21152393,5705.986163,0 +1209,68127.16681,47.9523112,12099.9703,0 +1210,41349.12251,53.85620698,8083.232201,0 +1211,69132.46258,33.47118164,7621.410219,0 +1212,38477.3256,27.34633178,289.576582,0 +1213,68291.15365,46.79353807,9577.955143,0 +1214,58074.60654,59.79866948,8551.259893,0 +1215,26867.10826,32.62229962,1730.151907,0 +1216,32348.45015,59.75238657,3229.820063,0 +1217,31044.39176,49.93586833,4465.872769,0 +1218,29279.74979,18.8130986,2291.988119,0 +1219,35145.10019,47.79338272,510.7399689,0 +1220,44405.28066,34.38252406,3917.876098,0 +1221,42059.6369,55.29068575,5310.271529,0 +1222,28612.20306,58.86168988,4948.48807,0 +1223,46546.70455,60.7597447,254.8435786,0 +1224,22832.32393,32.5164225,3318.407787,1 +1225,21565.92154,44.1265854,4136.761126,0 +1226,26078.21358,31.80688066,3665.880899,1 +1227,60503.54785,20.1184142,6766.53302,0 +1228,31233.30776,41.70405183,1662.453616,0 +1229,34505.80093,49.32442037,2151.696592,0 +1230,35485.11827,47.38887031,2482.04225,0 +1231,45986.3534,20.2872954,7112.926157,1 +1232,43308.17898,34.83136125,6777.198246,1 +1233,53284.11968,32.14321496,849.5451843,0 +1234,68398.28748,36.99394877,8106.859293,0 +1235,64743.70707,56.25701235,4304.929109,0 +1236,68412.60985,28.15512845,551.8430811,0 +1237,59695.10715,27.90329809,8889.928408,1 +1238,32406.57073,20.98656135,3394.65824,0 +1239,33184.19598,60.37477159,4580.097831,0 +1240,47688.25057,34.56708902,1377.018407,0 +1241,42591.59524,45.11655999,4602.245841,0 +1242,34051.52804,35.74565239,6224.152886,0 +1243,61800.03438,29.66579595,9143.611709,1 +1244,45360.71627,27.07574763,4569.994987,0 +1245,20252.12346,27.4416098,3360.059414,1 +1246,30134.7096,43.81722832,958.9980819,0 +1247,56217.3265,51.58228056,2866.5859,0 +1248,31722.73095,34.85181726,2877.756104,0 +1249,60178.44619,33.26140894,3203.615438,0 +1250,51144.24305,37.83799986,3411.656424,0 +1251,22449.07739,35.7657793,1187.42695,0 +1252,44932.87511,27.14705773,622.9128105,0 +1253,40929.48394,20.25460597,2352.287116,0 +1254,31092.26772,43.83220649,5617.993126,0 +1255,44743.55163,53.05626193,2574.707756,0 +1256,60770.22902,33.62672671,2242.82576,0 +1257,43528.48431,59.89202707,2264.725152,0 +1258,25008.94953,63.21714847,2941.028155,0 +1259,47433.41542,60.45516523,9139.14371,0 +1260,50064.34637,29.3425137,417.6331058,0 +1261,60348.41356,60.44679037,3037.968147,0 +1262,67471.1271,26.92335366,4448.412323,0 +1263,30492.87567,61.6792429,4834.738644,0 +1264,25640.07888,22.6564796,3105.443021,1 +1265,55040.75817,52.71448411,8352.061533,0 +1266,34476.70638,23.35098726,898.1339068,0 +1267,23345.86645,38.29017484,4548.110289,0 +1268,24426.02987,34.69642326,823.835162,0 +1269,65849.88967,30.96884689,5051.302388,0 +1270,60454.52565,41.05160496,7875.070926,0 +1271,22680.31843,55.09158789,1743.774685,0 +1272,44471.87373,19.61305844,5883.660558,1 +1273,46572.32,59.12164964,721.3416051,0 +1274,24369.84125,61.73937931,1366.536025,0 +1275,56830.27286,37.16311407,10462.74045,0 +1276,46942.99652,55.64154017,2187.065484,0 +1277,42521.79071,54.74892029,6745.817708,0 +1278,63188.32853,51.14162945,3960.855647,0 +1279,29410.17752,23.49816499,812.3235343,0 +1280,46668.62847,57.8349421,1833.48585,0 +1281,62693.26958,22.52686485,5321.712558,0 +1282,65307.12748,23.72316582,1906.79553,0 +1283,59589.06429,20.60976412,4191.715856,0 +1284,41019.54879,23.25425304,3005.826864,0 +1285,48058.87138,47.74535288,6527.990222,0 +1286,50208.53002,35.02765993,729.6044303,0 +1287,62526.88793,61.05217092,5835.542391,0 +1288,48192.18561,29.75531818,5026.474557,0 +1289,30884.05673,31.27786188,4099.902045,1 +1290,36965.74248,53.76235862,6333.391588,0 +1291,43536.03891,27.86690712,6427.726093,1 +1292,69181.66406,39.23658259,1173.740942,0 +1293,64233.0407,26.71456132,12104.53421,1 +1294,52593.51506,19.53498199,811.9078625,0 +1295,32282.25175,42.63495589,3345.941958,0 +1296,54077.84328,57.12066029,7149.066896,0 +1297,51595.35748,28.46181675,385.4033625,0 +1298,23097.37648,53.76303351,4517.579801,0 +1299,27407.0562,26.15943832,2949.931674,0 +1300,64395.29807,63.17131965,10054.63464,0 +1301,60432.21666,41.92232593,6300.868939,0 +1302,42990.98283,29.52880839,4665.581021,0 +1303,41581.88992,22.85122067,7895.112865,1 +1304,53289.06529,47.45984368,8047.140754,0 +1305,22372.50524,31.49304954,1118.926064,0 +1306,57119.73969,22.33448761,10211.72193,1 +1307,31112.05942,49.61600423,424.3521316,0 +1308,68936.32135,43.36505621,11073.1585,0 +1309,20436.33129,56.94096616,2356.18197,0 +1310,20583.61217,21.98976744,53.18620734,0 +1311,58988.3058,19.9765914,4728.259542,0 +1312,45311.83184,26.928215,3103.812228,0 +1313,60856.83099,37.07050063,10238.4963,0 +1314,45818.28325,48.45083936,8137.164403,0 +1315,20904.55548,41.0178787,2606.023776,0 +1316,49908.29187,29.55094038,2903.036128,0 +1317,55988.29528,31.08703947,7745.754809,1 +1318,62125.25811,21.08586764,5700.457195,0 +1319,48822.72096,60.94434946,599.347887,0 +1320,29976.8291,57.6661531,3796.03274,0 +1321,41944.26819,61.13506293,1203.700529,0 +1322,36970.36044,33.70459912,1268.506383,0 +1323,39992.71911,20.8266799,4999.202015,1 +1324,42450.54304,61.61424618,6210.280587,0 +1325,42146.93762,23.72052181,7367.258247,1 +1326,52841.51644,18.44602338,5957.386324,0 +1327,66418.95631,62.64878626,9340.544462,0 +1328,44047.66656,27.31337199,2096.917501,0 +1329,24821.21413,19.24390259,874.3242555,0 +1330,35583.61854,63.05439716,27.25248225,0 +1331,25289.60724,21.28056335,2130.793535,0 +1332,39770.12866,45.19093801,280.8785474,0 +1333,59511.1387,29.27411054,2520.514452,0 +1334,51211.65404,45.62856826,4093.360006,0 +1335,56530.49727,45.54492831,5957.993317,0 +1336,42604.46298,41.93638103,7942.168145,0 +1337,66642.00775,56.16766872,4958.067776,0 +1338,35527.83449,47.44952906,325.1195915,0 +1339,66896.76531,31.54546803,387.3944203,0 +1340,51980.35954,35.41570329,6243.04503,0 +1341,40081.42056,43.11674328,770.7775496,0 +1342,50167.67175,42.04748763,5592.651807,0 +1343,39545.95959,43.70086672,5787.658045,0 +1344,43372.39761,55.1945837,474.5253267,0 +1345,33084.16985,59.02910226,5762.469958,0 +1346,53187.97965,63.55816426,4879.846139,0 +1347,48290.88046,30.03676084,4902.975221,0 +1348,66078.76935,45.53632503,3664.621452,0 +1349,51547.16666,53.11192749,6563.41158,0 +1350,39393.14058,52.73927401,5415.054667,0 +1351,69592.01083,63.238625,13025.05657,0 +1352,54588.50119,31.07765403,2847.819173,0 +1353,44964.0106,48.41480327,693.2147138,0 +1354,46081.64555,50.06910454,1487.786041,0 +1355,45564.01535,22.28801022,715.8366044,0 +1356,62657.60254,28.17425706,5771.088254,0 +1357,67921.63211,35.85197819,1399.875472,0 +1358,59514.01238,57.01784581,2504.722649,0 +1359,48422.53611,41.85424768,3520.565901,0 +1360,22001.31745,31.61728481,2155.812173,0 +1361,52529.69877,18.81280424,9808.19094,1 +1362,24061.46316,34.51152011,3980.578783,1 +1363,23450.87213,34.40636966,1419.805523,0 +1364,32866.57824,44.88061703,6037.007733,0 +1365,30958.90796,43.60356595,1558.930765,0 +1366,27550.89527,29.73292642,3944.219318,1 +1367,36024.93789,51.80688647,4155.44929,0 +1368,46801.27429,34.60522061,5315.97382,0 +1369,27082.71898,60.27796277,4990.557123,0 +1370,65435.03538,19.84650416,12727.99755,1 +1371,59295.74108,51.34979947,493.7144299,0 +1372,45435.26724,21.04219778,2143.386972,0 +1373,61742.60958,34.55981004,326.9895676,0 +1374,31396.86601,34.99668137,3719.230135,0 +1375,35916.70415,53.54044336,6401.189486,0 +1376,43969.60416,25.48304865,7455.920157,1 +1377,60624.81537,39.85778773,6740.716136,0 +1378,69939.32968,55.63762125,2225.224533,0 +1379,69755.32016,44.54368228,13766.05124,0 +1380,69478.39876,22.65633974,10229.40788,1 +1381,34192.16052,27.9972893,5233.663228,1 +1382,57457.85794,50.71466253,3608.805202,0 +1383,63910.33466,56.63563264,8986.718948,0 +1384,26643.80899,19.28962851,1413.783224,0 +1385,23985.07542,24.4328115,2284.209129,0 +1386,63660.64881,50.28296012,7832.572411,0 +1387,44102.33009,21.0142084,842.5690773,0 +1388,29409.8059,41.61039681,3388.560923,0 +1389,49294.65931,37.25489393,4574.85478,0 +1390,39553.64738,53.69063324,7063.898036,0 +1391,68583.04105,57.08784007,2922.288685,0 +1392,31060.60626,53.27721306,3729.97465,0 +1393,29190.32462,60.29122269,5239.594773,0 +1394,63437.70015,54.62814035,11963.36422,0 +1395,35243.06323,35.62987754,748.9407179,0 +1396,36475.35353,63.3304318,413.3111631,0 +1397,63271.60883,23.34209813,11298.17219,1 +1398,45540.32552,59.31814027,1490.470251,0 +1399,68565.3855,21.21090931,1231.537368,0 +1400,20063.09958,24.27833881,2495.132991,1 +1401,44222.2622,55.86147245,7443.486707,0 +1402,67839.24446,47.78258022,5609.326602,0 +1403,54009.69228,49.40990043,884.7355047,0 +1404,52234.07535,47.98450551,9255.842934,0 +1405,28423.13147,61.67145866,5282.849182,0 +1406,52623.43759,50.41852689,1156.319703,0 +1407,25636.33357,55.7820572,1239.688258,0 +1408,60842.94116,60.25514261,6608.968795,0 +1409,36727.746,58.18465417,7287.540764,0 +1410,63830.74744,35.1387838,5271.626982,0 +1411,43108.41456,22.29196192,647.8793786,0 +1412,25285.26113,19.81954403,1027.577792,0 +1413,57646.24291,62.87074846,1452.493378,0 +1414,51027.56761,61.50629662,3313.30041,0 +1415,37389.77238,34.44216878,7365.938916,1 +1416,65017.59349,26.91783316,1017.166545,0 +1417,20595.93458,45.47522442,1330.067638,0 +1418,56445.47391,55.66152026,6875.579683,0 +1419,60864.32175,44.14129754,3704.032126,0 +1420,51231.01043,62.58516727,813.0279887,0 +1421,41103.13692,63.07950736,3644.301903,0 +1422,56267.05082,43.12014146,8238.115021,0 +1423,20774.84582,35.58814413,1347.331612,0 +1424,46424.22123,59.20610592,4087.180707,0 +1425,29909.554,62.72826528,4495.278753,0 +1426,62808.50507,56.77153074,6465.75059,0 +1427,41243.80514,52.07526842,4161.573148,0 +1428,46089.14789,63.29653317,1618.218357,0 +1429,69191.23338,57.38518469,6270.574035,0 +1430,60846.66501,32.67339488,8974.492021,1 +1431,66558.93437,48.51616071,3090.992455,0 +1432,27428.28187,54.32718563,1287.632081,0 +1433,60912.79896,60.68736389,3870.333893,0 +1434,28127.50945,41.48682721,3279.557824,0 +1435,64029.54348,36.15775109,1644.339177,0 +1436,61836.73562,29.54548658,10971.97464,1 +1437,37005.07185,58.89032024,1068.887398,0 +1438,56003.5734,18.25026519,3639.900038,0 +1439,58038.92625,54.00212561,538.2305227,0 +1440,29237.2562,24.59757384,23.91642787,0 +1441,33265.79055,21.58345902,5968.442038,1 +1442,66236.92716,35.91910784,2756.9723,0 +1443,41978.7125,52.53010216,1603.924862,0 +1444,63453.22313,23.91570541,10668.36351,1 +1445,24985.59066,50.1327548,2017.139948,0 +1446,53593.1132,62.88581,1428.189214,0 +1447,54179.72187,52.90507993,10028.01586,0 +1448,20126.41377,36.46094444,1432.355862,0 +1449,51180.83971,56.78991141,2875.44523,0 +1450,36455.70151,38.47891862,3437.076895,0 +1451,39188.94529,22.39910978,3545.162249,0 +1452,47852.9269,38.93593926,3295.320061,0 +1453,20014.48947,43.2022035,2426.306223,0 +1454,28630.00951,27.29153003,4406.995056,1 +1455,66688.91312,48.08527027,9690.308798,0 +1456,53226.19441,43.61874729,5686.643116,0 +1457,35609.47835,47.88639354,2574.093432,0 +1458,64065.68286,43.28767314,771.7174942,0 +1459,54935.65838,42.95419475,7921.83051,0 +1460,67800.58133,28.94329698,5035.139378,0 +1461,46893.33671,43.68609808,9131.864419,0 +1462,54648.96698,56.49055625,10674.77021,0 +1463,31410.50729,36.20457331,5797.292398,0 +1464,36989.58954,33.75563245,556.5559407,0 +1465,33198.12828,30.14201203,4285.386912,1 +1466,47704.38083,21.84036088,2717.079485,0 +1467,30569.5727,37.47767833,4752.557572,0 +1468,61398.68707,63.2944038,9008.154521,0 +1469,67750.82599,33.51874317,6855.986311,0 +1470,47637.86203,51.05145093,6708.673591,0 +1471,38357.51752,25.54630783,2548.413916,0 +1472,43156.30527,27.84683467,2413.011907,0 +1473,41101.54295,35.65403369,5240.114373,0 +1474,59475.49718,36.73713048,2628.262124,0 +1475,40708.91941,32.81676887,5532.343843,1 +1476,30391.4733,59.26477079,2072.634066,0 +1477,46024.14456,24.17451622,4318.377722,0 +1478,66529.48522,59.42979515,6337.674939,0 +1479,68115.98033,37.29177117,7458.559482,0 +1480,38423.08429,29.20911929,3676.568354,0 +1481,33227.28018,23.14898157,6470.410381,1 +1482,61674.45723,54.82930153,4054.551771,0 +1483,26931.06825,41.28060416,3668.646773,0 +1484,60040.99384,44.1414116,2659.694541,0 +1485,26181.24241,42.66303152,2618.973497,0 +1486,61552.21751,61.08761215,4042.539734,0 +1487,29705.07473,41.83413714,1912.205091,0 +1488,53934.81227,21.47434043,2085.817639,0 +1489,23007.38788,48.97252372,2296.795327,0 +1490,48552.84341,29.37808354,5650.889688,0 +1491,66370.88876,63.11349631,5176.361161,0 +1492,49140.26986,43.64116195,8832.651707,0 +1493,39684.9818,33.62885053,2590.928175,0 +1494,32025.40445,37.50658678,217.488528,0 +1495,55568.17946,42.75697379,6114.867546,0 +1496,45898.51352,24.6631496,5617.178645,1 +1497,39217.90992,30.10142049,864.6240529,0 +1498,34070.604,27.29405159,1401.685061,0 +1499,66768.36121,49.13087482,4255.367636,0 +1500,31400.85843,62.58585538,4464.404268,0 +1501,49335.75726,43.62837513,2549.620474,0 +1502,51774.05251,47.78184138,1508.761776,0 +1503,43064.64735,43.9394257,787.0471897,0 +1504,41226.13468,49.1241523,2155.660059,0 +1505,43044.51778,60.84842437,1661.71346,0 +1506,33546.29204,54.69847514,5347.295507,0 +1507,69209.33087,26.03284952,6284.833573,0 +1508,32291.54455,39.17461364,277.3875685,0 +1509,66274.0729,21.82560426,11576.54224,1 +1510,34102.7912,42.05373123,1269.254575,0 +1511,21144.56287,21.35588554,703.363923,0 +1512,41049.97459,49.84094132,5890.113644,0 +1513,36351.27773,33.863571,6619.832683,1 +1514,63144.45921,32.09867363,812.5725496,0 +1515,32086.91354,28.41077647,6362.390354,1 +1516,28873.16732,62.23474707,992.5777177,0 +1517,65359.29615,18.60512247,7707.240563,0 +1518,49064.28847,43.37234458,5636.35344,0 +1519,23763.06056,39.39309718,2950.314863,0 +1520,51845.94256,43.41943507,8750.832088,0 +1521,67035.32642,46.09920974,11276.62254,0 +1522,49240.7625,53.25457982,8004.35984,0 +1523,36132.32759,18.71333256,3009.39734,0 +1524,67006.80649,36.1980031,3692.169172,0 +1525,39453.64561,32.4015456,436.9352469,0 +1526,52205.60706,24.64014386,1135.152226,0 +1527,46319.4168,45.14678836,1523.072058,0 +1528,29398.72742,41.41217588,4673.766198,0 +1529,31135.60771,19.00967065,2457.91369,0 +1530,65603.81676,19.02164232,11775.35458,1 +1531,41362.50837,44.36380808,607.965612,0 +1532,60302.559,52.18494901,6509.698608,0 +1533,54468.27921,23.87681513,68.62545627,0 +1534,47683.71578,32.30653595,4752.287877,0 +1535,38160.1165,31.3281223,3429.901579,0 +1536,22925.81208,34.74104443,2547.279742,0 +1537,64087.85881,38.03717583,722.5195892,0 +1538,65824.51566,40.62192013,2643.106432,0 +1539,53451.93154,49.65761603,10529.72349,0 +1540,36455.48471,35.26034072,2464.162321,0 +1541,39573.34144,29.13702618,5785.884275,1 +1542,41052.36578,49.91170718,4652.951748,0 +1543,37895.18173,54.51514932,6071.340205,0 +1544,44827.23377,56.29849542,2639.916846,0 +1545,28341.08677,39.96176879,2248.242914,0 +1546,56887.2028,36.41703326,10969.59669,0 +1547,25146.59568,21.05419926,2890.652793,0 +1548,54739.16452,28.02186979,7218.968224,1 +1549,30497.20451,28.47694441,4573.59409,1 +1550,25358.89794,41.17179443,2220.2256,0 +1551,29993.5633,49.05577318,2749.585697,0 +1552,64675.77948,30.51510922,4628.603003,0 +1553,56256.03887,22.16050255,5452.244532,0 +1554,31702.3343,28.4226721,3587.722389,0 +1555,34113.11328,30.83356232,6360.154897,1 +1556,44666.01285,54.7025233,7548.444373,0 +1557,39421.36684,26.43064278,6111.961017,1 +1558,21683.19372,46.02739322,339.5922689,0 +1559,65697.59284,36.28615968,5644.653159,0 +1560,68657.7893,35.76410817,2427.949887,0 +1561,66981.413,27.48095465,6678.5628,0 +1562,45971.13349,27.39847292,4776.490486,0 +1563,42965.99275,45.19554599,8109.051409,0 +1564,50895.81034,18.95700206,5556.83987,0 +1565,46175.03194,36.91534391,1064.081875,0 +1566,44984.89912,51.74721229,4584.611816,0 +1567,66941.86486,22.54073556,12380.62471,1 +1568,31022.14485,39.17585766,6144.939436,0 +1569,46583.1996,32.70437491,6241.270508,1 +1570,56201.84143,43.27752018,8346.320922,0 +1571,31587.06486,56.32561627,2677.825713,0 +1572,40716.19089,25.80565159,2389.700759,0 +1573,64966.06564,28.37929369,11495.7311,1 +1574,68503.20589,19.28053543,3580.463677,0 +1575,33867.50226,30.15785425,5714.026374,1 +1576,54195.01517,39.30174824,6649.801459,0 +1577,50565.33709,62.65586538,693.1964169,0 +1578,57216.10102,31.82232807,3554.389365,0 +1579,29849.96714,39.92872415,3678.899676,0 +1580,29072.15179,38.47588837,1589.438432,0 +1581,29775.14222,21.03497172,3327.236235,0 +1582,46672.71314,54.54870377,1408.497717,0 +1583,66393.71115,58.61227209,9540.416626,0 +1584,29338.25645,25.69012912,5120.406797,1 +1585,67289.58568,26.72740046,13376.79771,1 +1586,45980.33434,31.94832367,5929.09803,1 +1587,34163.62565,45.78271792,6617.400172,0 +1588,52216.8158,23.637136,6803.333393,1 +1589,62313.27763,60.91730571,925.7955921,0 +1590,49205.6371,24.62202976,3393.856589,0 +1591,65688.7315,24.56447541,3673.870415,0 +1592,43489.82845,51.73379038,6501.041226,0 +1593,40966.67453,46.75507215,2393.524149,0 +1594,37261.44712,23.71839249,2075.519822,0 +1595,58775.40389,45.6972166,5673.599822,0 +1596,39395.83041,36.37047119,7557.873338,0 +1597,21144.16215,58.39219715,987.7941458,0 +1598,33126.13272,50.96395425,4169.992872,0 +1599,30931.50602,35.88248498,1074.787904,0 +1600,31936.94201,59.03712775,4087.995048,0 +1601,38157.02968,51.52814013,5628.012004,0 +1602,21032.81869,30.08246411,4024.089367,1 +1603,50238.53247,34.55520077,2567.615154,0 +1604,67346.66246,34.90151683,6752.122458,0 +1605,33261.64602,18.22962939,586.6510962,0 +1606,53113.0361,59.43689228,10080.52438,0 +1607,42749.99032,56.41909458,4626.538637,0 +1608,42108.19992,26.99135128,1020.978164,0 +1609,61344.53221,20.17553224,7172.654332,0 +1610,54738.68229,26.77192946,6210.728279,0 +1611,69695.15045,26.42448341,8418.25316,1 +1612,62507.35478,27.95702726,6590.77723,0 +1613,61922.77464,24.808657,1933.08292,0 +1614,58023.72377,42.75183866,2785.779563,0 +1615,27010.88377,36.60962245,2373.175255,0 +1616,21194.61617,25.91319002,1102.848094,0 +1617,68338.0974,34.33447148,12840.69671,1 +1618,67772.79368,41.51526086,5037.933861,0 +1619,67131.80269,58.06280852,2271.404537,0 +1620,33159.21728,42.34317793,2135.532137,0 +1621,66087.08847,51.14572202,11039.28872,0 +1622,60362.34427,24.69412307,10306.70536,1 +1623,54609.46518,18.41373634,5618.20457,0 +1624,63637.28183,26.85198754,9955.225362,1 +1625,40918.5703,37.18584542,3813.699268,0 +1626,51486.13032,33.55102974,3955.113351,0 +1627,44896.25649,48.61068103,3787.639141,0 +1628,24877.68441,29.82362039,1546.422886,0 +1629,52263.3555,34.29609224,10161.94667,1 +1630,42775.52551,39.22708316,6145.987757,0 +1631,67064.01367,18.17604345,8945.289469,1 +1632,50307.94468,51.91293237,7207.941173,0 +1633,37432.68096,22.66916169,4445.502385,0 +1634,30084.15883,18.45082514,737.2537244,0 +1635,61427.41464,20.10800883,2163.312487,0 +1636,54718.85279,29.52485768,2883.284107,0 +1637,47923.57551,57.21906913,6931.716435,0 +1638,22880.7276,18.42886766,1909.215139,0 +1639,46118.5501,23.97400067,2728.311486,0 +1640,35082.38569,41.15368948,2918.477721,0 +1641,38387.32228,30.0760336,6453.507839,1 +1642,57413.57224,43.9119505,9421.298413,0 +1643,28198.09734,62.43771619,4370.793619,0 +1644,50117.85704,32.82728384,3599.068821,0 +1645,34876.33293,53.41569725,3102.347059,0 +1646,64126.49168,19.29785353,4956.941565,0 +1647,41916.69268,48.14870817,6106.109586,0 +1648,50052.29293,27.4822349,5589.328271,0 +1649,39158.91751,41.29678218,6887.738421,0 +1650,62219.03754,19.5239827,5831.521429,0 +1651,67151.31861,51.65509895,3941.698673,0 +1652,46166.16313,25.99612062,901.7531177,0 +1653,23881.78651,32.89370972,1190.630105,0 +1654,48445.11312,38.97956768,8733.442215,0 +1655,32441.65201,58.70955658,840.7142066,0 +1656,33820.18651,61.05088434,4342.178111,0 +1657,61812.90135,52.96198773,3124.312409,0 +1658,25347.57266,61.64539487,2188.503086,0 +1659,33965.52371,43.91274646,3123.898738,0 +1660,23641.70268,56.81360339,4203.50356,0 +1661,50660.90425,52.16866404,7511.003494,0 +1662,44037.24398,58.44050724,5269.518403,0 +1663,51657.12396,35.41469759,609.3508858,0 +1664,46573.24438,53.11079369,5533.292189,0 +1665,26922.46222,44.15557121,3950.00079,0 +1666,48414.25154,21.95358986,2105.709505,0 +1667,43974.84053,47.43241103,8371.493105,0 +1668,65913.83201,22.7890518,12972.41836,1 +1669,64715.99897,60.93941035,11173.80845,0 +1670,25481.98791,48.36229289,4005.816148,0 +1671,54170.53261,37.44105072,1048.932372,0 +1672,51653.70474,19.877512,1853.419156,0 +1673,66054.50623,39.07713889,10321.0987,0 +1674,60019.44714,19.38241478,6978.347128,0 +1675,31523.95286,62.27492278,5697.021469,0 +1676,65660.94854,22.19499034,93.15264188,0 +1677,61893.48364,19.1799065,6038.162662,0 +1678,49230.09821,47.84611477,8375.729867,0 +1679,38337.82947,55.50695263,5691.09349,0 +1680,64016.43339,44.27695019,10048.39421,0 +1681,46308.64516,40.70646159,6815.485141,0 +1682,66209.14427,45.18819383,7134.656119,0 +1683,47770.71142,33.94936609,5366.868793,0 +1684,29856.48632,18.05587449,4731.816864,1 +1685,21451.49729,52.18401962,1719.038044,0 +1686,59673.17045,57.28667146,7533.679839,0 +1687,47481.42964,20.49522153,9402.876118,1 +1688,36219.77291,56.83890067,4280.794199,0 +1689,59458.70434,56.43017456,1513.327637,0 +1690,67010.84098,51.5222956,11646.91061,0 +1691,58693.41942,27.17628489,4033.153519,0 +1692,43041.04139,46.99845733,2245.505278,0 +1693,31920.41272,52.15906047,217.1879621,0 +1694,32771.12541,58.93258487,1853.68197,0 +1695,55487.14713,32.10271948,178.6924716,0 +1696,68406.80717,46.05627261,2491.460861,0 +1697,37277.12306,28.35490842,4242.640648,0 +1698,39762.52658,25.66994986,3809.347155,0 +1699,41674.24314,54.65833392,3203.204656,0 +1700,25789.74203,45.31621115,4442.33178,0 +1701,24575.05989,36.69002906,1667.748767,0 +1702,58082.3601,60.15632703,9175.667318,0 +1703,67881.8805,53.26011154,10503.57125,0 +1704,50115.0549,26.77897816,3447.002152,0 +1705,40443.20363,33.65929892,1857.252327,0 +1706,65824.83738,19.67324128,154.9456163,0 +1707,51199.86984,22.40357681,4064.818093,0 +1708,67032.28946,44.32616679,5487.820266,0 +1709,42205.6829,23.43490545,2444.737196,0 +1710,37730.36211,52.42988101,5273.559352,0 +1711,47398.31104,50.17342698,9041.878835,0 +1712,48933.20969,50.06578295,5071.371891,0 +1713,53078.85583,49.17618969,10566.35387,0 +1714,53236.993,57.93261219,703.6021978,0 +1715,58121.95469,58.36380871,5161.107409,0 +1716,57261.15139,40.23255914,2527.755923,0 +1717,52102.5909,19.37246483,8799.819842,1 +1718,45165.92595,37.90000438,5534.550798,0 +1719,58809.29247,37.45918855,5470.587846,0 +1720,36598.34047,41.96212964,6849.29481,0 +1721,62096.28261,25.02343215,8034.747774,1 +1722,68114.07098,47.19519398,4325.099268,0 +1723,67978.46685,23.45665138,7382.502551,0 +1724,26615.5243,53.35032216,3458.193614,0 +1725,51254.37001,50.6494071,8747.208629,0 +1726,34428.97264,27.3684103,6016.615091,1 +1727,60974.58714,33.89574856,6165.65882,0 +1728,63330.73455,30.23024362,5170.899852,0 +1729,58168.47407,27.47152114,2935.367657,0 +1730,59579.60921,51.1302136,2319.362857,0 +1731,52219.8955,47.67986773,6560.469542,0 +1732,28700.87259,28.79704182,5090.310491,1 +1733,27193.74305,21.40959607,4518.858351,1 +1734,67417.571,29.91098356,6478.402532,0 +1735,57341.43277,23.47849796,784.8948568,0 +1736,64056.53612,48.86906318,5982.805039,0 +1737,66370.69351,38.40550487,5906.034309,0 +1738,45045.43165,58.62369495,8489.405985,0 +1739,58609.13148,22.09757985,4270.532996,0 +1740,53289.06797,32.30020689,7395.513416,1 +1741,60309.32883,34.37905483,2343.073833,0 +1742,45139.48639,19.61720917,1743.691464,0 +1743,22815.64061,61.72656548,2749.079844,0 +1744,45215.01469,27.83884812,383.8501673,0 +1745,40568.07518,35.94146628,5990.318608,0 +1746,43721.25181,55.12770834,5923.392464,0 +1747,38129.75487,19.08440959,3964.729278,0 +1748,22547.96164,57.62641276,2957.295712,0 +1749,57468.05944,62.265046,8452.955624,0 +1750,25534.67352,37.87175619,1084.966942,0 +1751,26325.50339,56.35027775,3336.131472,0 +1752,65913.83084,36.47775765,11738.91571,0 +1753,67119.13596,18.05518851,2725.240313,0 +1754,62020.46813,56.65353651,114.2098881,0 +1755,37965.84934,27.8285796,299.0547059,0 +1756,62114.85602,30.74947746,12115.89231,1 +1757,36871.06176,46.03436164,792.7110544,0 +1758,65030.90935,36.70069066,2231.976166,0 +1759,23193.6046,41.93605652,548.5961163,0 +1760,59568.62432,40.55891909,7685.326744,0 +1761,50527.58417,26.65296268,5639.245689,0 +1762,60776.11021,34.20694181,10382.43968,1 +1763,61632.28271,34.43080878,3028.591328,0 +1764,45930.45265,49.99133072,7765.252827,0 +1765,25857.76559,41.75835442,1810.232339,0 +1766,55093.92123,55.17608333,6485.30159,0 +1767,42301.33448,19.50343568,1480.61489,0 +1768,51903.53425,59.76266204,8807.867971,0 +1769,64398.14616,35.5975403,1674.905633,0 +1770,41089.51083,57.62741738,997.1841685,0 +1771,36727.5509,24.59731819,794.5568182,0 +1772,38163.39454,63.25165246,454.3076768,0 +1773,35949.89641,56.7387456,3680.177028,0 +1774,44979.80219,32.5319016,6045.089487,1 +1775,48211.58184,30.55734418,2606.124698,0 +1776,28267.08995,54.6462767,965.3732272,0 +1777,33816.22334,60.24819138,5265.743252,0 +1778,33078.99598,36.32719969,6278.316279,0 +1779,36019.8172,42.84566569,2987.962123,0 +1780,34238.53029,63.43418801,6002.93511,0 +1781,62064.52068,22.82585726,2972.381023,0 +1782,44867.61524,55.81275256,366.1011044,0 +1783,37162.88822,28.87660671,3110.531147,0 +1784,65680.94802,62.77942662,8838.231305,0 +1785,58772.85748,46.50503835,7048.005343,0 +1786,32435.24811,43.06626362,5685.405228,0 +1787,58028.2132,50.09548172,5753.895027,0 +1788,60595.27533,62.22070887,4534.490222,0 +1789,36565.80389,19.89940228,1888.334736,0 +1790,20742.69697,61.59842116,2295.818094,0 +1791,46666.63801,18.74557575,7677.823856,1 +1792,32203.56694,61.16757056,838.0214411,0 +1793,36535.31539,29.87489182,271.7251877,0 +1794,28163.29507,58.00352914,2121.151956,0 +1795,39019.35774,31.79270886,3196.559769,0 +1796,24709.08325,54.74520391,1915.385594,0 +1797,43052.96856,31.52685355,488.9372735,0 +1798,25003.91611,53.41157775,2183.713426,0 +1799,46696.89266,34.199782,4732.498144,0 +1800,50112.4622,41.30463745,5067.032925,0 +1801,43265.90032,44.74331012,6194.07205,0 +1802,67802.69446,49.03798708,13443.47318,0 +1803,55408.70595,43.32280682,10300.28125,0 +1804,67048.893,55.05304129,10839.91376,0 +1805,40262.59764,51.79885818,6535.85195,0 +1806,46427.49918,61.84653541,5671.45056,0 +1807,46911.1971,23.43098081,4263.853588,0 +1808,57359.55243,34.79526286,10011.41068,1 +1809,34569.30464,63.64065153,6254.527617,0 +1810,52797.40104,21.12701044,1080.42349,0 +1811,56630.39526,57.97316146,8442.891373,0 +1812,45245.73975,35.82444267,1974.009904,0 +1813,20803.61454,61.89225017,758.4348491,0 +1814,57717.60679,48.79781292,3153.222829,0 +1815,20647.88765,20.32164556,725.4568686,0 +1816,59046.45715,36.82711952,8237.046829,0 +1817,62662.25883,25.29886488,1965.921357,0 +1818,33614.49461,46.47308182,4837.787511,0 +1819,48765.12887,50.07041654,5183.859126,0 +1820,57240.75694,41.57139076,313.6279418,0 +1821,49973.66646,43.91861469,363.899917,0 +1822,41255.93969,45.58326501,5296.907773,0 +1823,61129.72316,35.10917797,11302.76769,0 +1824,48938.58344,59.70792423,3028.834619,0 +1825,68648.2414,27.92001002,9425.707309,1 +1826,41250.82854,39.07818304,7651.577272,0 +1827,22415.65476,40.68729838,4371.715441,0 +1828,24112.49939,35.97133752,3285.499948,0 +1829,41692.60518,62.12124981,1708.712503,0 +1830,23516.7277,27.36269519,559.9053229,0 +1831,53812.22648,44.91915229,3245.041667,0 +1832,29750.2948,45.54445543,3627.987077,0 +1833,22633.67692,37.59693031,553.5208586,0 +1834,28713.83052,54.70084552,1936.813257,0 +1835,63321.90927,19.48791488,8092.98278,1 +1836,35276.58799,28.57213319,6820.315404,1 +1837,35914.60931,60.80509128,520.9960335,0 +1838,31568.14432,63.86398451,5067.410013,0 +1839,39934.06749,31.60796663,184.7443024,0 +1840,48614.84968,61.30129349,5984.950784,0 +1841,29838.12481,25.89508406,5913.649556,1 +1842,57745.35888,36.72961032,5540.464047,0 +1843,44447.5293,32.71813418,2714.403108,0 +1844,51768.00534,30.54451147,6632.036203,1 +1845,34891.14044,55.04893523,6152.314492,0 +1846,45382.8079,42.51634459,2742.454975,0 +1847,40719.49032,22.9269144,6415.086244,1 +1848,55145.78501,57.88245864,8968.678877,0 +1849,48752.42408,30.76336091,8934.785761,1 +1850,55763.42742,30.58544797,7913.837734,1 +1851,36431.16141,46.45279704,6783.361363,0 +1852,40522.82828,63.88714083,7720.780489,0 +1853,42465.66975,58.01657008,7314.976322,0 +1854,38561.94404,45.87983104,4831.111171,0 +1855,54957.44967,59.50636724,6976.463275,0 +1856,24822.06984,29.02037885,2361.166802,0 +1857,25252.48774,23.78830375,434.8674516,0 +1858,25671.74258,18.74645599,2272.14762,0 +1859,60672.14559,43.05590862,6279.687007,0 +1860,60729.94924,40.77350178,5006.850087,0 +1861,40240.72756,26.95900532,7498.630447,1 +1862,57513.81746,33.09201951,6921.491029,1 +1863,64287.39763,45.88390644,6301.594778,0 +1864,48428.03365,33.93239331,7718.479795,1 +1865,55313.83225,25.21256484,9733.113189,1 +1866,27045.39957,50.22120054,2503.7884,0 +1867,58216.07198,27.40448065,9581.833306,1 +1868,34722.96483,22.22338695,4073.411901,0 +1869,58503.77101,42.37251293,7050.432526,0 +1870,55299.78724,62.19314775,8052.381283,0 +1871,49501.90592,50.78811185,2226.81958,0 +1872,61765.70904,59.95587347,3649.643103,0 +1873,48430.99367,18.50809359,6069.649094,1 +1874,66366.95742,41.57616997,465.0115658,0 +1875,55320.78001,29.41721633,5990.716973,0 +1876,48774.28816,62.84084913,3728.483342,0 +1877,61679.95316,24.1914258,3060.030168,0 +1878,61485.1796,60.18819954,3211.670281,0 +1879,24402.44017,52.02759737,101.2185381,0 +1880,21258.90278,54.22456338,706.6197387,0 +1881,48763.68054,28.0602953,8172.052504,1 +1882,24406.89381,37.9053185,1733.403111,0 +1883,61693.58631,25.68422605,1568.863689,0 +1884,22748.03304,26.94071725,108.6299113,0 +1885,21479.94672,24.3142805,1098.073365,0 +1886,51286.6564,45.85982714,1134.234384,0 +1887,27153.66392,48.81803283,3177.517372,0 +1888,36370.49398,39.67078913,2855.2161,0 +1889,32400.54496,61.67923932,3591.797505,0 +1890,60434.16443,63.21861647,2474.248112,0 +1891,57303.47976,52.15536585,10491.63215,0 +1892,42994.68224,36.42561073,4453.824617,0 +1893,68339.80794,23.36532355,2505.868398,0 +1894,49292.30314,20.62232701,967.1345882,0 +1895,57802.4297,43.04172886,6796.590935,0 +1896,50779.38079,39.43591481,6859.836596,0 +1897,35993.98976,53.93902055,93.89580488,0 +1898,21771.12934,33.68777873,350.4455484,0 +1899,61414.80126,56.88918916,9743.609259,0 +1900,35784.66349,46.54787028,110.2028905,0 +1901,24791.1867,39.64327145,4844.680983,0 +1902,49048.75736,52.05179371,6363.113668,0 +1903,69852.05872,62.20231314,9246.265058,0 +1904,21217.74746,21.36568696,2690.768134,1 +1905,48031.06741,43.67016376,7826.325909,0 +1906,64072.31322,61.15839923,2426.008622,0 +1907,56689.4639,41.00340032,5740.591698,0 +1908,45769.25952,55.82719728,8236.476519,0 +1909,35020.48877,24.99191048,6832.803042,1 +1910,56751.92851,59.20442489,7877.330041,0 +1911,27363.6318,44.38642089,3215.263093,0 +1912,48455.71741,27.47626829,1780.507334,0 +1913,21424.09133,36.91843838,1795.223958,0 +1914,69992.33271,41.77123143,52.87219028,0 +1915,68110.23995,32.17157472,11029.66771,1 +1916,48015.55474,28.2417962,54.00824238,0 +1917,23102.21779,35.76168337,1779.574528,0 +1918,46134.85414,54.86544593,8716.611259,0 +1919,48547.96138,56.64147426,1940.870699,0 +1920,26095.02691,58.10209089,5143.490416,0 +1921,64057.84479,59.85843482,5774.281958,0 +1922,24454.19062,52.39086216,864.9687379,0 +1923,40506.94401,52.24151412,5961.531816,0 +1924,43421.04574,27.21744021,4705.757083,0 +1925,55881.5418,33.30668529,8383.074165,1 +1926,45917.60069,45.15712066,8253.273858,0 +1927,52901.90954,60.26135933,729.3773772,0 +1928,41183.82466,56.03236488,7606.993239,0 +1929,25379.91548,24.92908735,4693.111697,1 +1930,27514.08847,36.27868438,192.1446105,0 +1931,44241.283,19.98253883,8733.179295,1 +1932,29076.33771,41.2224627,286.2644342,0 +1933,60536.91287,32.32617541,3132.551831,0 +1934,47881.956,38.09981235,5575.635648,0 +1935,49144.37106,51.89382023,1633.03578,0 +1936,33707.80104,59.91764355,321.5789312,0 +1937,46442.28279,28.84595832,1484.561548,0 +1938,25602.95725,28.4463766,2214.922493,0 +1939,61236.39608,36.00169172,6562.903837,0 +1940,48187.34788,55.53300959,2003.41185,0 +1941,29933.20193,18.65902132,5953.521871,1 +1942,41027.90736,44.77193547,4369.218876,0 +1943,49990.66011,45.54275512,1896.754994,0 +1944,59792.50859,24.18749914,660.2414526,0 +1945,35879.51999,41.07293472,5335.403499,0 +1946,29102.22172,27.1292334,1890.447478,0 +1947,30047.81941,51.07732459,5768.742735,0 +1948,59299.16272,36.98427692,4944.056264,0 +1949,64484.0148,33.09942354,1391.601802,0 +1950,36352.42229,43.71886432,6239.247526,0 +1951,66034.7543,60.7262946,3913.782124,0 +1952,51650.27137,40.1050569,3743.003437,0 +1953,31898.15991,41.31715911,2015.182969,0 +1954,58780.2335,18.70173368,5029.707636,0 +1955,67754.10467,42.9807849,2989.950997,0 +1956,48500.26815,61.30480025,7054.606149,0 +1957,55704.79816,48.51661891,5594.332971,0 +1958,50458.9582,52.31456503,9852.889427,0 +1959,48263.00343,28.54960456,7798.793463,1 +1960,38755.16271,56.35542661,4244.498033,0 +1961,68131.6643,57.40525789,7813.23983,0 +1962,28991.42394,37.16515694,1249.347564,0 +1963,35108.55795,40.74341282,4002.991276,0 +1964,28858.59887,23.69458972,3764.815174,1 +1965,22800.79677,28.19825664,3740.900936,1 +1966,29572.9759,39.2304778,5006.253823,0 +1967,21982.01737,34.91551629,4265.173704,1 +1968,45576.83836,38.67104976,4952.653346,0 +1969,55068.66894,51.7573598,4852.766598,0 +1970,56441.01624,43.20699111,9043.756044,0 +1971,68047.92531,47.69451986,4023.064765,0 +1972,36275.73586,30.30818374,644.3841948,0 +1973,52389.36685,54.96931281,10398.82059,0 +1974,23678.37611,47.4664851,1779.814597,0 +1975,37707.64295,31.34404787,268.2909708,0 +1976,57753.56896,54.23591535,5067.449964,0 +1977,30529.96329,47.60440226,6046.840845,0 +1978,44022.26874,31.1926268,1707.67287,0 +1979,58533.88468,40.51896256,7832.443321,0 +1980,33702.53183,48.14840359,922.0365897,0 +1981,40236.87207,52.58077285,4354.314412,0 +1982,62619.15599,43.99946111,3959.611772,0 +1983,50738.36219,45.99319907,9719.562798,0 +1984,64466.76014,33.32714402,8537.369666,1 +1985,64636.40219,60.886966,2583.106425,0 +1986,22371.52219,39.14222532,2291.856428,0 +1987,67994.98847,38.62225938,7289.014109,0 +1988,49640.0047,20.54240863,5760.858734,0 +1989,42067.24645,24.27061152,4601.606183,0 +1990,43662.09269,25.25260926,7269.596897,1 +1991,34237.57542,34.10165393,2658.090632,0 +1992,26300.44655,45.53938522,2317.393678,0 +1993,30803.80616,23.25008412,623.0241528,0 +1994,54421.41016,26.8219284,3273.631823,0 +1995,24254.70079,37.75162224,2225.284643,0 +1996,59221.04487,48.51817941,1926.729397,0 +1997,69516.12757,23.16210447,3503.176156,0 +1998,44311.44926,28.0171669,5522.786693,1 +1999,43756.0566,63.97179584,1622.722598,0 +2000,69436.57955,56.15261703,7378.833599,0 diff --git a/examples/FastAPI/data/database.py b/examples/FastAPI/data/database.py new file mode 100644 index 00000000..e01686c5 --- /dev/null +++ b/examples/FastAPI/data/database.py @@ -0,0 +1,18 @@ +import os +from supabase import create_client, Client + +#variables for database and url configuration +from config import Config + +class SupabaseDB: + """ + class instance for database connection to supabase + + :str: url: configuration for database url for data inside supafast project + :str: key: configuration for database secret key for authentication + :object: supabase: Supabase instance for connection to database environment + """ + + url: str = Config.URL + key: str = Config.KEY + supabase: Client = create_client(url, key) \ No newline at end of file diff --git a/examples/FastAPI/main.py b/examples/FastAPI/main.py new file mode 100644 index 00000000..d99435d8 --- /dev/null +++ b/examples/FastAPI/main.py @@ -0,0 +1,104 @@ +from fastapi import FastAPI, Response, Request +import json + +# database cursor to supabase +from data.database import SupabaseDB + +# redis related imports +from fastapi_redis_cache import cache_one_week, FastApiRedisCache + +# supabase client +from config import Config +from data.database import SupabaseDB + +# application factory +app = FastAPI(title="Supafast Tutorial", debug=True) + + +@app.on_event("startup") +def onStart(): + """ + Helper function for on event handler in FastAPI. The event + passed in as a param checks for the startup event for the + current application. This then triggers our connection to our + redis cache via instance. + + :rtype: Cache instance for application. + """ + + r = FastApiRedisCache() + r.init( + host_url=Config.REDIS_URL, + prefix="supafast-cache", + response_header="X-Supafast-Cache", + ignore_arg_types=[Request, Response, SupabaseDB.supabase] + ) + + +@app.get("/") +def index(): + """ + Initial view or endpoint when visiting localhost:8000/ + + :rtype: Welcome and instruction for walkthrough via readme or localhost:8000/docs + """ + + return {"👋 Hello": "Please refer to the readme\ + documentation for more or visit http://localhost:8000/docs"} + + +@app.get("/getResult") +def query(): + """ + Endpoing for testing data to be pulled from your supabase instance. + + :rtype: 1st row of consumer credit data. + :endpoint: { + "data": [ + { + "clientid": 1, + "income": 66155.9251, + "age": 59, + "loan": 8106.532131, + "default": "0" + } + ], + } + """ + + data = SupabaseDB.supabase.table('credit_data').select('*').limit(1).execute() + return data + + +@app.get("/cachedResults") +@cache_one_week() +async def get_defaults(request: Request, response: Response): + """ + asynchronous function call for grabbing load default specific data + by the first 10 rows of data from your supabase instance. + + :rtype: Loan defaults for individuals by a certain age or older. + :endpoint: + HTTP/1.1 200 OK + cache-control: max-age=604321 + content-length: 894 + content-type: application/json + date: Wed, 16 Feb 2022 21:53:56 GMT + expires: Wed, 23 Feb 2022 21:45:57 GMT + server: uvicorn + x-supafast-cache: Hit + + "data=[{'clientid': 1, 'income': 66155.9251, 'age': 59, 'loan': 8106.532131, 'default': '0'}, + {'clientid': 2, 'income': 34415.15397, 'age': 48, 'loan': 6564.745018, 'default': '0'}, + {'clientid': 3, 'income': 57317.17006, 'age': 63, 'loan': 8020.953296, 'default': '0'}, + {'clientid': 4, 'income': 42709.5342, 'age': 46, 'loan': 6103.64226, 'default': '0'}, + {'clientid': 5, 'income': 66952.68885, 'age': 19, 'loan': 8770.099235, 'default': '1'}, + {'clientid': 6, 'income': 24904.06414, 'age': 57, 'loan': 15.49859844, 'default': '0'}, + {'clientid': 7, 'income': 48430.35961, 'age': 27, 'loan': 5722.581981, 'default': '0'}, + {'clientid': 8, 'income': 24500.14198, 'age': 33, 'loan': 2971.00331, 'default': '1'}, + {'clientid': 9, 'income': 40654.89254, 'age': 55, 'loan': 4755.82528, 'default': '0'}, + {'clientid': 10, 'income': 25075.87277, 'age': 40, 'loan': 1409.230371, 'default': '0'}] count=None" + """ + + data = SupabaseDB.supabase.table('credit_data').select('*').limit(10).execute() + return json.dumps(data, indent=4) \ No newline at end of file diff --git a/examples/FastAPI/requirements.txt b/examples/FastAPI/requirements.txt new file mode 100644 index 00000000..3325ceb2 --- /dev/null +++ b/examples/FastAPI/requirements.txt @@ -0,0 +1,35 @@ +anyio==3.5.0 +asgiref==3.5.0 +certifi==2021.10.8 +charset-normalizer==2.0.11 +click==8.0.3 +Deprecated==1.2.13 +deprecation==2.1.0 +fastapi==0.73.0 +fastapi-redis-cache==0.2.5 +gotrue==0.5.0 +h11==0.12.0 +httpcore==0.14.7 +httptools==0.3.0 +httpx==0.21.3 +idna==3.3 +packaging==21.3 +postgrest-py==0.8.2 +pydantic==1.9.0 +pyparsing==3.0.7 +python-dateutil==2.8.2 +python-dotenv==0.19.2 +PyYAML==6.0 +realtime==0.0.4 +redis==4.1.3 +rfc3986==1.5.0 +six==1.16.0 +sniffio==1.2.0 +starlette==0.17.1 +supabase==0.4.0 +typing-extensions==4.0.1 +uvicorn==0.17.4 +uvloop==0.16.0 +watchgod==0.7 +websockets==9.1 +wrapt==1.13.3