summaryrefslogtreecommitdiffstats
path: root/services/audioflinger
diff options
context:
space:
mode:
authorSathishKumar Mani <smani@codeaurora.org>2012-09-24 11:48:11 -0700
committerIliyan Malchev <malchev@google.com>2012-09-26 18:48:34 -0700
commit12bff5dd87e6b863482e6bfd9f4561078ebcf3f0 (patch)
tree9b565e188d5e7d66916bda87c8f9c09b7d3e6874 /services/audioflinger
parent72ff5903df5f409ea83f74c363a52f0745ced8b8 (diff)
downloadframeworks_av-12bff5dd87e6b863482e6bfd9f4561078ebcf3f0.zip
frameworks_av-12bff5dd87e6b863482e6bfd9f4561078ebcf3f0.tar.gz
frameworks_av-12bff5dd87e6b863482e6bfd9f4561078ebcf3f0.tar.bz2
audioflinger/resampler: Add VERY_HIGH_QUALITY audio-resampler
Change-Id: I34f5d36ae60010ec64222d6660d10a84da3bf566 Bug: 7024293 Signed-off-by: Iliyan Malchev <malchev@google.com>
Diffstat (limited to 'services/audioflinger')
-rw-r--r--services/audioflinger/audio-resampler/Android.mk14
-rw-r--r--services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp55
-rw-r--r--services/audioflinger/audio-resampler/dnsampler_filter_coefficients_x128_10112011.h2585
-rw-r--r--services/audioflinger/audio-resampler/resampler_filter_coefficients_10042011.h2071
4 files changed, 4725 insertions, 0 deletions
diff --git a/services/audioflinger/audio-resampler/Android.mk b/services/audioflinger/audio-resampler/Android.mk
new file mode 100644
index 0000000..ba37b19
--- /dev/null
+++ b/services/audioflinger/audio-resampler/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ AudioResamplerCoefficients.cpp
+
+LOCAL_MODULE := libaudio-resampler
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SHARED_LIBRARIES := libutils liblog
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp b/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp
new file mode 100644
index 0000000..ade58a7
--- /dev/null
+++ b/services/audioflinger/audio-resampler/AudioResamplerCoefficients.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <dnsampler_filter_coefficients_x128_10112011.h>
+#include <resampler_filter_coefficients_10042011.h>
+#undef LOG_TAG
+#include <utils/Log.h>
+//#include "common_log.h"
+#define LOG_TAG "ResamplerCoefficients"
+#define LOG_NDEBUG 0
+
+const int32_t RESAMPLE_FIR_NUM_COEF = 16;
+const int32_t RESAMPLE_FIR_LERP_INT_BITS = 7;
+
+using namespace android;
+#ifdef __cplusplus
+extern "C" {
+#endif
+const int32_t* readResamplerCoefficients(bool upSample) {
+
+ ALOGV("readResamplerCoefficients");
+ if(upSample) {
+ return resampler_filter_coefficients_10042011;
+ }
+ else {
+ return dnsampler_filter_coefficients_x128_10112011;
+ }
+
+}
+
+int32_t readResampleFirNumCoeff() {
+
+ return RESAMPLE_FIR_NUM_COEF;
+}
+
+int32_t readResampleFirLerpIntBits() {
+
+ return RESAMPLE_FIR_LERP_INT_BITS;
+}
+#ifdef __cplusplus
+}
+#endif
diff --git a/services/audioflinger/audio-resampler/dnsampler_filter_coefficients_x128_10112011.h b/services/audioflinger/audio-resampler/dnsampler_filter_coefficients_x128_10112011.h
new file mode 100644
index 0000000..eb2944c
--- /dev/null
+++ b/services/audioflinger/audio-resampler/dnsampler_filter_coefficients_x128_10112011.h
@@ -0,0 +1,2585 @@
+
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <stdlib.h>
+
+namespace android {
+
+const int32_t dnsampler_filter_coefficients_x128_10112011[] = {
+1849391518,
+1849249650,
+1848824221,
+1848115177,
+1847122891,
+1845847499,
+1844289491,
+1842449129,
+1840327103,
+1837923861,
+1835240203,
+1832276710,
+1829034388,
+1825513999,
+1821716652,
+1817643240,
+1813295074,
+1808673214,
+1803779065,
+1798613825,
+1793179109,
+1787476282,
+1781507048,
+1775272909,
+1768775774,
+1762017295,
+1754999460,
+1747724062,
+1740193297,
+1732409109,
+1724373764,
+1716089338,
+1707558293,
+1698782831,
+1689765473,
+1680508558,
+1671014814,
+1661286715,
+1651327042,
+1641138399,
+1630723762,
+1620085842,
+1609227651,
+1598152036,
+1586862206,
+1575361116,
+1563652006,
+1551737947,
+1539622358,
+1527308388,
+1514799466,
+1502098869,
+1489210218,
+1476136877,
+1462882477,
+1449450498,
+1435844739,
+1422068735,
+1408126274,
+1394021008,
+1379756900,
+1365337657,
+1350767225,
+1336049408,
+1321188297,
+1306187721,
+1291051731,
+1275784259,
+1260389523,
+1244871491,
+1229234343,
+1213482137,
+1197619187,
+1181649550,
+1165577481,
+1149407125,
+1133142876,
+1116788884,
+1100349476,
+1083828868,
+1067231493,
+1050561533,
+1033823337,
+1017021160,
+1000159475,
+983242522,
+966274693,
+949260282,
+932203771,
+915109401,
+897981548,
+880824504,
+863642743,
+846440509,
+829222164,
+811991981,
+794754382,
+777513558,
+760273800,
+743039333,
+725814532,
+708603558,
+691410662,
+674240023,
+657095935,
+639982476,
+622903794,
+605863979,
+588867231,
+571917545,
+555018972,
+538175499,
+521391190,
+504669905,
+488015541,
+471431958,
+454923090,
+438492688,
+422144531,
+405882352,
+389709927,
+373630848,
+357648715,
+341767096,
+325989596,
+310319649,
+294760687,
+279316098,
+263989284,
+248783473,
+233701878,
+218747691,
+203924116,
+189234208,
+174680993,
+160267473,
+145996632,
+131871305,
+117894282,
+104068338,
+90396230,
+76880575,
+63523937,
+50328860,
+37297842,
+24433248,
+11737378,
+-787473,
+-13139049,
+-25315210,
+-37313887,
+-49133021,
+-60770615,
+-72224791,
+-83493750,
+-94575698,
+-105468905,
+-116171744,
+-126682678,
+-137000178,
+-147122799,
+-157049194,
+-166778112,
+-176308299,
+-185638576,
+-194767849,
+-203695121,
+-212419395,
+-220939772,
+-229255432,
+-237365662,
+-245269744,
+-252967058,
+-260457050,
+-267739278,
+-274813300,
+-281678782,
+-288335451,
+-294783151,
+-301021713,
+-307051072,
+-312871207,
+-318482217,
+-323884189,
+-329077326,
+-334061875,
+-338838202,
+-343406662,
+-347767725,
+-351921891,
+-355869785,
+-359612019,
+-363149327,
+-366482470,
+-369612329,
+-372539768,
+-375265766,
+-377791316,
+-380117528,
+-382245500,
+-384176449,
+-385911601,
+-387452302,
+-388799883,
+-389955791,
+-390921477,
+-391698507,
+-392288434,
+-392692926,
+-392913649,
+-392952381,
+-392810881,
+-392491020,
+-391994654,
+-391323748,
+-390480249,
+-389466214,
+-388283683,
+-386934801,
+-385421695,
+-383746599,
+-381911725,
+-379919384,
+-377771869,
+-375471577,
+-373020872,
+-370422215,
+-367678046,
+-364790904,
+-361763287,
+-358597785,
+-355296968,
+-351863496,
+-348299986,
+-344609141,
+-340793645,
+-336856270,
+-332799742,
+-328626863,
+-324340418,
+-319943269,
+-315438225,
+-310828168,
+-306115960,
+-301304533,
+-296396768,
+-291395607,
+-286303973,
+-281124849,
+-275861163,
+-270515897,
+-265092015,
+-259592541,
+-254020439,
+-248378720,
+-242670378,
+-236898450,
+-231065914,
+-225175783,
+-219231057,
+-213234773,
+-207189910,
+-201099474,
+-194966455,
+-188793871,
+-182584674,
+-176341840,
+-170068330,
+-163767128,
+-157441156,
+-151093349,
+-144726627,
+-138343919,
+-131948090,
+-125542009,
+-119128533,
+-112710525,
+-106290787,
+-99872116,
+-93457296,
+-87049105,
+-80650255,
+-74263449,
+-67891377,
+-61536721,
+-55202101,
+-48890119,
+-42603362,
+-36344397,
+-30115726,
+-23919828,
+-17759168,
+-11636191,
+-5553280,
+487212,
+6482947,
+12431620,
+18330990,
+24178851,
+29973011,
+35711312,
+41391655,
+47011985,
+52570260,
+58064483,
+63492718,
+68853076,
+74143678,
+79362692,
+84508338,
+89578892,
+94572639,
+99487923,
+104323138,
+109076739,
+113747190,
+118333012,
+122832775,
+127245111,
+131568663,
+135802141,
+139944301,
+143993966,
+147949965,
+151811195,
+155576593,
+159245166,
+162815931,
+166287976,
+169660430,
+172932498,
+176103387,
+179172383,
+182138803,
+185002039,
+187761495,
+190416648,
+192967011,
+195412171,
+197751720,
+199985330,
+202112693,
+204133584,
+206047780,
+207855140,
+209555545,
+211148956,
+212635338,
+214014737,
+215287214,
+216452911,
+217511975,
+218464633,
+219311127,
+220051778,
+220686909,
+221216923,
+221642232,
+221963326,
+222180699,
+222294922,
+222306577,
+222216320,
+222024810,
+221732784,
+221340984,
+220850224,
+220261321,
+219575167,
+218792653,
+217914741,
+216942395,
+215876649,
+214718535,
+213469149,
+212129590,
+210701024,
+209184611,
+207581573,
+205893134,
+204120584,
+202265202,
+200328328,
+198311300,
+196215518,
+194042369,
+191793295,
+189469738,
+187073198,
+184605160,
+182067159,
+179460730,
+176787462,
+174048923,
+171246730,
+168382500,
+165457899,
+162474572,
+159434208,
+156338493,
+153189156,
+149987902,
+146736470,
+143436603,
+140090079,
+136698650,
+133264101,
+129788215,
+126272805,
+122719654,
+119130572,
+115507371,
+111851884,
+108165922,
+104451311,
+100709877,
+96943466,
+93153889,
+89342976,
+85512554,
+81664466,
+77800525,
+73922553,
+70032372,
+66131809,
+62222659,
+58306723,
+54385799,
+50461691,
+46536172,
+42611011,
+38687978,
+34768834,
+30855311,
+26949132,
+23052017,
+19165682,
+15291809,
+11432068,
+7588126,
+3761633,
+-45792,
+-3832550,
+-7597044,
+-11337694,
+-15052951,
+-18741290,
+-22401190,
+-26031153,
+-29629717,
+-33195444,
+-36726898,
+-40222670,
+-43681381,
+-47101682,
+-50482228,
+-53821707,
+-57118836,
+-60372370,
+-63581062,
+-66743703,
+-69859111,
+-72926141,
+-75943654,
+-78910550,
+-81825759,
+-84688251,
+-87496999,
+-90251018,
+-92949348,
+-95591074,
+-98175284,
+-100701113,
+-103167725,
+-105574326,
+-107920130,
+-110204396,
+-112426408,
+-114585497,
+-116681001,
+-118712307,
+-120678826,
+-122580018,
+-124415349,
+-126184333,
+-127886505,
+-129521449,
+-131088758,
+-132588075,
+-134019062,
+-135381436,
+-136674915,
+-137899273,
+-139054300,
+-140139836,
+-141155730,
+-142101884,
+-142978213,
+-143784688,
+-144521281,
+-145188022,
+-145784950,
+-146312156,
+-146769738,
+-147157848,
+-147476649,
+-147726356,
+-147907187,
+-148019419,
+-148063331,
+-148039258,
+-147947536,
+-147788557,
+-147562717,
+-147270463,
+-146912244,
+-146488563,
+-145999923,
+-145446877,
+-144829983,
+-144149847,
+-143407076,
+-142602324,
+-141736248,
+-140809557,
+-139822954,
+-138777189,
+-137673015,
+-136511230,
+-135292629,
+-134018047,
+-132688326,
+-131304347,
+-129866988,
+-128377166,
+-126835801,
+-125243852,
+-123602271,
+-121912047,
+-120174172,
+-118389676,
+-116559578,
+-114684934,
+-112766800,
+-110806267,
+-108804411,
+-106762342,
+-104681172,
+-102562041,
+-100406081,
+-98214447,
+-95988299,
+-93728821,
+-91437183,
+-89114578,
+-86762204,
+-84381279,
+-81973009,
+-79538619,
+-77079333,
+-74596397,
+-72091035,
+-69564491,
+-67018008,
+-64452847,
+-61870249,
+-59271470,
+-56657765,
+-54030397,
+-51390615,
+-48739670,
+-46078819,
+-43409324,
+-40732431,
+-38049385,
+-35361437,
+-32669835,
+-29975809,
+-27280589,
+-24585404,
+-21891486,
+-19200045,
+-16512287,
+-13829420,
+-11152644,
+-8483140,
+-5822079,
+-3170634,
+-529970,
+2098768,
+4714446,
+7315931,
+9902105,
+12471869,
+15024139,
+17557833,
+20071880,
+22565234,
+25036861,
+27485734,
+29910841,
+32311195,
+34685828,
+37033773,
+39354083,
+41645834,
+43908123,
+46140049,
+48340738,
+50509337,
+52645015,
+54746948,
+56814333,
+58846388,
+60842359,
+62801494,
+64723072,
+66606390,
+68450776,
+70255559,
+72020101,
+73743779,
+75426002,
+77066186,
+78663776,
+80218238,
+81729070,
+83195771,
+84617877,
+85994939,
+87326540,
+88612269,
+89851753,
+91044631,
+92190579,
+93289279,
+94340447,
+95343813,
+96299144,
+97206213,
+98064827,
+98874809,
+99636019,
+100348318,
+101011607,
+101625796,
+102190834,
+102706673,
+103173303,
+103590724,
+103958975,
+104278097,
+104548170,
+104769282,
+104941559,
+105065128,
+105140157,
+105166820,
+105145327,
+105075891,
+104958764,
+104794201,
+104582494,
+104323937,
+104018863,
+103667606,
+103270537,
+102828031,
+102340497,
+101808346,
+101232024,
+100611979,
+99948695,
+99242655,
+98494373,
+97704368,
+96873190,
+96001391,
+95089549,
+94138248,
+93148103,
+92119724,
+91053751,
+89950827,
+88811624,
+87636812,
+86427086,
+85183142,
+83905705,
+82595493,
+81253249,
+79879717,
+78475668,
+77041865,
+75579093,
+74088140,
+72569815,
+71024919,
+69454270,
+67858693,
+66239031,
+64596117,
+62930801,
+61243936,
+59536392,
+57809025,
+56062708,
+54298314,
+52516733,
+50718843,
+48905532,
+47077692,
+45236223,
+43382015,
+41515965,
+39638972,
+37751945,
+35855780,
+33951378,
+32039643,
+30121481,
+28197786,
+26269454,
+24337383,
+22402475,
+20465617,
+18527696,
+16589601,
+14652220,
+12716424,
+10783083,
+8853070,
+6927251,
+5006483,
+3091612,
+1183489,
+-717043,
+-2609159,
+-4492039,
+-6364862,
+-8226816,
+-10077103,
+-11914934,
+-13739523,
+-15550093,
+-17345884,
+-19126146,
+-20890132,
+-22637106,
+-24366346,
+-26077146,
+-27768800,
+-29440618,
+-31091927,
+-32722068,
+-34330384,
+-35916235,
+-37478994,
+-39018053,
+-40532806,
+-42022667,
+-43487063,
+-44925444,
+-46337259,
+-47721979,
+-49079087,
+-50408090,
+-51708495,
+-52979834,
+-54221651,
+-55433514,
+-56614992,
+-57765679,
+-58885178,
+-59973119,
+-61029133,
+-62052877,
+-63044020,
+-64002256,
+-64927281,
+-65818818,
+-66676601,
+-67500387,
+-68289938,
+-69045045,
+-69765506,
+-70451147,
+-71101796,
+-71717309,
+-72297549,
+-72842408,
+-73351780,
+-73825587,
+-74263759,
+-74666254,
+-75033033,
+-75364085,
+-75659405,
+-75919016,
+-76142943,
+-76331242,
+-76483972,
+-76601219,
+-76683074,
+-76729655,
+-76741083,
+-76717507,
+-76659078,
+-76565976,
+-76438382,
+-76276507,
+-76080561,
+-75850784,
+-75587416,
+-75290725,
+-74960980,
+-74598477,
+-74203511,
+-73776405,
+-73317481,
+-72827089,
+-72305578,
+-71753320,
+-71170691,
+-70558089,
+-69915913,
+-69244582,
+-68544519,
+-67816171,
+-67059982,
+-66276416,
+-65465942,
+-64629046,
+-63766215,
+-62877953,
+-61964766,
+-61027182,
+-60065722,
+-59080928,
+-58073342,
+-57043524,
+-55992029,
+-54919428,
+-53826296,
+-52713221,
+-51580788,
+-50429596,
+-49260245,
+-48073350,
+-46869516,
+-45649365,
+-44413516,
+-43162604,
+-41897255,
+-40618108,
+-39325799,
+-38020978,
+-36704285,
+-35376367,
+-34037875,
+-32689467,
+-31331794,
+-29965512,
+-28591278,
+-27209755,
+-25821597,
+-24427461,
+-23028006,
+-21623896,
+-20215785,
+-18804329,
+-17390186,
+-15974013,
+-14556459,
+-13138172,
+-11719802,
+-10301999,
+-8885401,
+-7470647,
+-6058375,
+-4649221,
+-3243807,
+-1842755,
+-446687,
+943782,
+2328043,
+3705495,
+5075537,
+6437575,
+7791026,
+9135312,
+10469860,
+11794099,
+13107474,
+14409434,
+15699433,
+16976932,
+18241406,
+19492338,
+20729214,
+21951528,
+23158786,
+24350507,
+25526208,
+26685422,
+27827692,
+28952575,
+30059626,
+31148419,
+32218533,
+33269565,
+34301113,
+35312788,
+36304216,
+37275034,
+38224885,
+39153423,
+40060316,
+40945246,
+41807897,
+42647972,
+43465182,
+44259258,
+45029930,
+45776947,
+46500068,
+47199069,
+47873729,
+48523844,
+49149222,
+49749687,
+50325066,
+50875204,
+51399956,
+51899193,
+52372790,
+52820642,
+53242651,
+53638739,
+54008828,
+54352864,
+54670795,
+54962591,
+55228223,
+55467686,
+55680976,
+55868110,
+56029109,
+56164013,
+56272864,
+56355729,
+56412671,
+56443780,
+56449143,
+56428871,
+56383077,
+56311893,
+56215452,
+56093910,
+55947423,
+55776167,
+55580318,
+55360074,
+55115633,
+54847211,
+54555028,
+54239319,
+53900322,
+53538294,
+53153491,
+52746187,
+52316657,
+51865197,
+51392097,
+50897668,
+50382220,
+49846081,
+49289577,
+48713047,
+48116836,
+47501302,
+46866801,
+46213703,
+45542381,
+44853220,
+44146603,
+43422927,
+42682590,
+41926002,
+41153572,
+40365719,
+39562864,
+38745438,
+37913870,
+37068598,
+36210060,
+35338709,
+34454988,
+33559353,
+32652259,
+31734171,
+30805546,
+29866852,
+28918556,
+27961133,
+26995053,
+26020792,
+25038826,
+24049638,
+23053702,
+22051499,
+21043509,
+20030219,
+19012108,
+17989658,
+16963352,
+15933674,
+14901104,
+13866119,
+12829202,
+11790833,
+10751487,
+9711638,
+8671763,
+7632335,
+6593820,
+5556683,
+4521391,
+3488407,
+2458187,
+1431187,
+407859,
+-611345,
+-1625983,
+-2635618,
+-3639811,
+-4638127,
+-5630141,
+-6615431,
+-7593576,
+-8564163,
+-9526785,
+-10481043,
+-11426537,
+-12362876,
+-13289673,
+-14206552,
+-15113136,
+-16009059,
+-16893959,
+-17767487,
+-18629291,
+-19479032,
+-20316375,
+-21140997,
+-21952575,
+-22750798,
+-23535360,
+-24305970,
+-25062334,
+-25804171,
+-26531205,
+-27243175,
+-27939817,
+-28620882,
+-29286128,
+-29935325,
+-30568244,
+-31184668,
+-31784388,
+-32367206,
+-32932927,
+-33481369,
+-34012357,
+-34525729,
+-35021324,
+-35498994,
+-35958600,
+-36400012,
+-36823105,
+-37227767,
+-37613893,
+-37981391,
+-38330171,
+-38660157,
+-38971278,
+-39263479,
+-39536704,
+-39790914,
+-40026074,
+-40242163,
+-40439161,
+-40617065,
+-40775874,
+-40915600,
+-41036259,
+-41137883,
+-41220502,
+-41284167,
+-41328926,
+-41354844,
+-41361987,
+-41350437,
+-41320276,
+-41271601,
+-41204513,
+-41119123,
+-41015546,
+-40893911,
+-40754348,
+-40597001,
+-40422014,
+-40229546,
+-40019757,
+-39792819,
+-39548906,
+-39288206,
+-39010907,
+-38717208,
+-38407310,
+-38081429,
+-37739776,
+-37382578,
+-37010062,
+-36622464,
+-36220024,
+-35802990,
+-35371611,
+-34926149,
+-34466863,
+-33994021,
+-33507895,
+-33008767,
+-32496915,
+-31972628,
+-31436196,
+-30887917,
+-30328089,
+-29757014,
+-29175000,
+-28582360,
+-27979405,
+-27366455,
+-26743828,
+-26111852,
+-25470849,
+-24821150,
+-24163084,
+-23496990,
+-22823200,
+-22142053,
+-21453889,
+-20759052,
+-20057882,
+-19350724,
+-18637922,
+-17919826,
+-17196782,
+-16469137,
+-15737241,
+-15001445,
+-14262095,
+-13519542,
+-12774133,
+-12026222,
+-11276155,
+-10524279,
+-9770942,
+-9016494,
+-8261277,
+-7505635,
+-6749910,
+-5994447,
+-5239585,
+-4485659,
+-3733007,
+-2981966,
+-2232865,
+-1486032,
+-741794,
+-479,
+737595,
+1472108,
+2202745,
+2929192,
+3651141,
+4368289,
+5080331,
+5786969,
+6487909,
+7182860,
+7871535,
+8553649,
+9228926,
+9897092,
+10557878,
+11211015,
+11856245,
+12493314,
+13121967,
+13741959,
+14353050,
+14955005,
+15547593,
+16130588,
+16703768,
+17266923,
+17819839,
+18362313,
+18894148,
+19415155,
+19925144,
+20423935,
+20911353,
+21387231,
+21851406,
+22303720,
+22744023,
+23172174,
+23588031,
+23991464,
+24382346,
+24760559,
+25125987,
+25478524,
+25818069,
+26144531,
+26457817,
+26757849,
+27044549,
+27317851,
+27577690,
+27824011,
+28056763,
+28275905,
+28481398,
+28673213,
+28851323,
+29015713,
+29166367,
+29303283,
+29426459,
+29535904,
+29631629,
+29713655,
+29782006,
+29836715,
+29877818,
+29905359,
+29919387,
+29919958,
+29907132,
+29880978,
+29841566,
+29788975,
+29723288,
+29644596,
+29552991,
+29448575,
+29331452,
+29201735,
+29059537,
+28904981,
+28738192,
+28559303,
+28368447,
+28165766,
+27951404,
+27725513,
+27488244,
+27239759,
+26980219,
+26709793,
+26428650,
+26136967,
+25834922,
+25522700,
+25200487,
+24868475,
+24526855,
+24175830,
+23815596,
+23446360,
+23068326,
+22681709,
+22286719,
+21883572,
+21472486,
+21053686,
+20627392,
+20193830,
+19753228,
+19305819,
+18851833,
+18391506,
+17925071,
+17452770,
+16974838,
+16491518,
+16003049,
+15509677,
+15011645,
+14509198,
+14002580,
+13492042,
+12977828,
+12460185,
+11939362,
+11415608,
+10889171,
+10360299,
+9829240,
+9296245,
+8761559,
+8225429,
+7688103,
+7149828,
+6610849,
+6071411,
+5531756,
+4992131,
+4452774,
+3913926,
+3375826,
+2838712,
+2302821,
+1768384,
+1235637,
+704811,
+176132,
+-350173,
+-873879,
+-1394763,
+-1912606,
+-2427192,
+-2938303,
+-3445727,
+-3949255,
+-4448681,
+-4943802,
+-5434414,
+-5920319,
+-6401326,
+-6877239,
+-7347870,
+-7813034,
+-8272552,
+-8726243,
+-9173932,
+-9615448,
+-10050623,
+-10479293,
+-10901295,
+-11316474,
+-11724679,
+-12125759,
+-12519569,
+-12905967,
+-13284818,
+-13655986,
+-14019344,
+-14374766,
+-14722134,
+-15061330,
+-15392240,
+-15714758,
+-16028781,
+-16334207,
+-16630942,
+-16918895,
+-17197981,
+-17468118,
+-17729228,
+-17981237,
+-18224079,
+-18457687,
+-18682004,
+-18896973,
+-19102546,
+-19298674,
+-19485318,
+-19662437,
+-19830002,
+-19987982,
+-20136353,
+-20275096,
+-20404197,
+-20523643,
+-20633430,
+-20733554,
+-20824018,
+-20904829,
+-20975997,
+-21037538,
+-21089473,
+-21131822,
+-21164617,
+-21187886,
+-21201668,
+-21206001,
+-21200931,
+-21186504,
+-21162774,
+-21129796,
+-21087631,
+-21036341,
+-20975996,
+-20906666,
+-20828426,
+-20741355,
+-20645535,
+-20541051,
+-20427994,
+-20306454,
+-20176529,
+-20038316,
+-19891920,
+-19737444,
+-19574998,
+-19404692,
+-19226642,
+-19040965,
+-18847782,
+-18647215,
+-18439392,
+-18224439,
+-18002487,
+-17773669,
+-17538123,
+-17295986,
+-17047397,
+-16792499,
+-16531439,
+-16264360,
+-15991413,
+-15712746,
+-15428514,
+-15138869,
+-14843968,
+-14543967,
+-14239027,
+-13929305,
+-13614963,
+-13296164,
+-12973072,
+-12645852,
+-12314669,
+-11979690,
+-11641084,
+-11299018,
+-10953660,
+-10605181,
+-10253752,
+-9899543,
+-9542724,
+-9183468,
+-8821947,
+-8458330,
+-8092791,
+-7725499,
+-7356629,
+-6986351,
+-6614835,
+-6242252,
+-5868775,
+-5494571,
+-5119810,
+-4744660,
+-4369291,
+-3993868,
+-3618559,
+-3243529,
+-2868942,
+-2494962,
+-2121750,
+-1749467,
+-1378274,
+-1008329,
+-639789,
+-272809,
+92455,
+455851,
+817231,
+1176442,
+1533338,
+1887773,
+2239604,
+2588688,
+2934884,
+3278056,
+3618068,
+3954787,
+4288079,
+4617816,
+4943871,
+5266119,
+5584437,
+5898705,
+6208806,
+6514625,
+6816049,
+7112968,
+7405275,
+7692864,
+7975633,
+8253483,
+8526319,
+8794045,
+9056570,
+9313805,
+9565666,
+9812069,
+10052933,
+10288182,
+10517742,
+10741541,
+10959512,
+11171587,
+11377707,
+11577809,
+11771839,
+11959741,
+12141468,
+12316971,
+12486205,
+12649128,
+12805703,
+12955894,
+13099669,
+13236996,
+13367853,
+13492214,
+13610059,
+13721371,
+13826136,
+13924343,
+14015982,
+14101050,
+14179544,
+14251463,
+14316813,
+14375598,
+14427829,
+14473516,
+14512676,
+14545324,
+14571484,
+14591176,
+14604428,
+14611268,
+14611727,
+14605840,
+14593643,
+14575174,
+14550478,
+14519596,
+14482577,
+14439469,
+14390325,
+14335196,
+14274142,
+14207219,
+14134490,
+14056016,
+13971864,
+13882101,
+13786797,
+13686023,
+13579854,
+13468364,
+13351632,
+13229736,
+13102759,
+12970783,
+12833894,
+12692177,
+12545721,
+12394615,
+12238951,
+12078822,
+11914322,
+11745546,
+11572592,
+11395558,
+11214544,
+11029649,
+10840977,
+10648630,
+10452712,
+10253328,
+10050584,
+9844586,
+9635444,
+9423263,
+9208154,
+8990226,
+8769590,
+8546356,
+8320637,
+8092543,
+7862188,
+7629684,
+7395143,
+7158678,
+6920405,
+6680434,
+6438881,
+6195859,
+5951482,
+5705863,
+5459115,
+5211352,
+4962688,
+4713234,
+4463103,
+4212408,
+3961262,
+3709774,
+3458055,
+3206216,
+2954367,
+2702617,
+2451073,
+2199845,
+1949039,
+1698760,
+1449115,
+1200206,
+952139,
+705015,
+458936,
+214002,
+-29687,
+-272033,
+-512941,
+-752313,
+-990055,
+-1226074,
+-1460278,
+-1692576,
+-1922878,
+-2151097,
+-2377147,
+-2600942,
+-2822399,
+-3041435,
+-3257970,
+-3471925,
+-3683223,
+-3891787,
+-4097545,
+-4300424,
+-4500352,
+-4697261,
+-4891083,
+-5081754,
+-5269208,
+-5453384,
+-5634222,
+-5811664,
+-5985653,
+-6156134,
+-6323055,
+-6486364,
+-6646013,
+-6801954,
+-6954144,
+-7102537,
+-7247093,
+-7387773,
+-7524538,
+-7657353,
+-7786184,
+-7910999,
+-8031770,
+-8148467,
+-8261064,
+-8369539,
+-8473868,
+-8574031,
+-8670011,
+-8761790,
+-8849356,
+-8932694,
+-9011796,
+-9086651,
+-9157254,
+-9223598,
+-9285682,
+-9343504,
+-9397065,
+-9446367,
+-9491415,
+-9532214,
+-9568774,
+-9601103,
+-9629214,
+-9653119,
+-9672835,
+-9688376,
+-9699763,
+-9707015,
+-9710154,
+-9709202,
+-9704187,
+-9695132,
+-9682068,
+-9665024,
+-9644031,
+-9619121,
+-9590330,
+-9557692,
+-9521245,
+-9481028,
+-9437080,
+-9389443,
+-9338159,
+-9283272,
+-9224828,
+-9162872,
+-9097452,
+-9028617,
+-8956417,
+-8880903,
+-8802127,
+-8720142,
+-8635003,
+-8546764,
+-8455484,
+-8361217,
+-8264022,
+-8163959,
+-8061088,
+-7955468,
+-7847161,
+-7736229,
+-7622737,
+-7506745,
+-7388320,
+-7267525,
+-7144428,
+-7019092,
+-6891585,
+-6761974,
+-6630327,
+-6496711,
+-6361194,
+-6223845,
+-6084734,
+-5943929,
+-5801500,
+-5657517,
+-5512050,
+-5365168,
+-5216942,
+-5067443,
+-4916741,
+-4764906,
+-4612009,
+-4458120,
+-4303311,
+-4147650,
+-3991209,
+-3834057,
+-3676265,
+-3517901,
+-3359037,
+-3199740,
+-3040080,
+-2880126,
+-2719945,
+-2559606,
+-2399177,
+-2238724,
+-2078315,
+-1918015,
+-1757891,
+-1598007,
+-1438428,
+-1279218,
+-1120441,
+-962159,
+-804435,
+-647330,
+-490906,
+-335223,
+-180338,
+-26312,
+126797,
+278933,
+430040,
+580062,
+728943,
+876632,
+1023074,
+1168219,
+1312015,
+1454411,
+1595360,
+1734812,
+1872720,
+2009038,
+2143721,
+2276725,
+2408006,
+2537522,
+2665233,
+2791097,
+2915076,
+3037131,
+3157228,
+3275328,
+3391399,
+3505405,
+3617315,
+3727097,
+3834720,
+3940156,
+4043377,
+4144356,
+4243067,
+4339485,
+4433587,
+4525351,
+4614755,
+4701780,
+4786406,
+4868616,
+4948393,
+5025721,
+5100587,
+5172977,
+5242878,
+5310279,
+5375172,
+5437547,
+5497396,
+5554712,
+5609491,
+5661728,
+5711419,
+5758562,
+5803157,
+5845203,
+5884701,
+5921652,
+5956061,
+5987931,
+6017267,
+6044075,
+6068363,
+6090138,
+6109409,
+6126186,
+6140482,
+6152306,
+6161673,
+6168595,
+6173088,
+6175167,
+6174849,
+6172151,
+6167091,
+6159687,
+6149960,
+6137930,
+6123618,
+6107046,
+6088238,
+6067217,
+6044007,
+6018632,
+5991120,
+5961496,
+5929787,
+5896020,
+5860225,
+5822429,
+5782663,
+5740956,
+5697338,
+5651841,
+5604497,
+5555336,
+5504393,
+5451699,
+5397289,
+5341196,
+5283454,
+5224099,
+5163164,
+5100686,
+5036700,
+4971242,
+4904348,
+4836055,
+4766400,
+4695420,
+4623152,
+4549633,
+4474901,
+4398995,
+4321952,
+4243810,
+4164608,
+4084383,
+4003175,
+3921021,
+3837960,
+3754032,
+3669273,
+3583724,
+3497422,
+3410406,
+3322714,
+3234384,
+3145456,
+3055967,
+2965954,
+2875457,
+2784513,
+2693159,
+2601433,
+2509371,
+2417012,
+2324391,
+2231545,
+2138511,
+2045325,
+1952022,
+1858638,
+1765208,
+1671768,
+1578350,
+1484991,
+1391723,
+1298581,
+1205597,
+1112804,
+1020235,
+927921,
+835894,
+744186,
+652826,
+561846,
+471276,
+381143,
+291479,
+202310,
+113666,
+25572,
+-61942,
+-148851,
+-235129,
+-320751,
+-405691,
+-489926,
+-573430,
+-656181,
+-738156,
+-819332,
+-899688,
+-979202,
+-1057854,
+-1135623,
+-1212489,
+-1288435,
+-1363441,
+-1437489,
+-1510563,
+-1582644,
+-1653718,
+-1723769,
+-1792781,
+-1860740,
+-1927631,
+-1993443,
+-2058161,
+-2121774,
+-2184270,
+-2245638,
+-2305868,
+-2364949,
+-2422873,
+-2479630,
+-2535212,
+-2589613,
+-2642824,
+-2694840,
+-2745654,
+-2795261,
+-2843656,
+-2890834,
+-2936793,
+-2981528,
+-3025036,
+-3067316,
+-3108366,
+-3148185,
+-3186772,
+-3224126,
+-3260249,
+-3295140,
+-3328802,
+-3361236,
+-3392444,
+-3422430,
+-3451195,
+-3478744,
+-3505081,
+-3530210,
+-3554136,
+-3576865,
+-3598402,
+-3618754,
+-3637927,
+-3655929,
+-3672765,
+-3688446,
+-3702978,
+-3716370,
+-3728631,
+-3739770,
+-3749797,
+-3758721,
+-3766553,
+-3773304,
+-3778983,
+-3783603,
+-3787174,
+-3789709,
+-3791219,
+-3791717,
+-3791215,
+-3789725,
+-3787262,
+-3783838,
+-3779466,
+-3774160,
+-3767934,
+-3760802,
+-3752778,
+-3743877,
+-3734113,
+-3723501,
+-3712056,
+-3699792,
+-3686725,
+-3672871,
+-3658244,
+-3642860,
+-3626735,
+-3609884,
+-3592324,
+-3574069,
+-3555137,
+-3535542,
+-3515302,
+-3494432,
+-3472947,
+-3450866,
+-3428203,
+-3404974,
+-3381197,
+-3356887,
+-3332060,
+-3306732,
+-3280921,
+-3254641,
+-3227909,
+-3200741,
+-3173153,
+-3145162,
+-3116781,
+-3088029,
+-3058920,
+-3029469,
+-2999694,
+-2969608,
+-2939228,
+-2908568,
+-2877644,
+-2846472,
+-2815064,
+-2783438,
+-2751607,
+-2719586,
+-2687389,
+-2655030,
+-2622524,
+-2589885,
+-2557126,
+-2524261,
+-2491304,
+-2458268,
+-2425166,
+-2392011,
+-2358815,
+-2325592,
+-2292354,
+-2259114,
+-2225882,
+-2192671,
+-2159493,
+-2126359,
+-2093281,
+-2060269,
+-2027334,
+-1994487,
+-1961738,
+-1929098,
+-1896576,
+-1864183,
+-1831927,
+-1799818,
+-1767865,
+-1736078,
+-1704464,
+-1673032,
+-1641791,
+-1610748,
+-1579911,
+-1549288,
+-1518886,
+-1488713,
+-1458774,
+-1429078,
+-1399630,
+-1370436,
+-1341503,
+-1312836,
+-1284441,
+-1256324,
+-1228489,
+-1200941,
+-1173686,
+-1146727,
+-1120069,
+-1093717,
+-1067673,
+-1041942,
+-1016527,
+-991432,
+-966659,
+-942211,
+-918092,
+-894303,
+-870846,
+-847724,
+-824940,
+-802493,
+-780386,
+-758621,
+-737199,
+-716120,
+-695385,
+-674996,
+-654951,
+-635253,
+-615901,
+-596895,
+-578234,
+-559919,
+-541949,
+-524324,
+-507042,
+-490103,
+-473505,
+-457248,
+-441330,
+-425750,
+-410506,
+-395596,
+-381019,
+-366773,
+-352855,
+-339263,
+-325995,
+-313049,
+-300421,
+-288110,
+-276112,
+-264425,
+-253046,
+-241972,
+-231199,
+-220725,
+-210546,
+-200659,
+-191060,
+-181746,
+-172713,
+-163958,
+-155477,
+-147266,
+-139321,
+-131639,
+-124215,
+-117045,
+-110126,
+-103453,
+-97022,
+-90829,
+-84870,
+-79140,
+-73636,
+-68352,
+-63285,
+-58431,
+-53784,
+-49341,
+-45097,
+-41048,
+-37188,
+-33515,
+-30023,
+-26708,
+-23566,
+-20592,
+-17782,
+-15130,
+-12634,
+-10289,
+-8089,
+-6031,
+-4111,
+-2324,
+-666,
+868,
+2281,
+3578,
+4763,
+5839,
+6812,
+7685,
+8462,
+9146,
+9743,
+10255,
+10686,
+11041,
+11322,
+11533,
+11679,
+11762,
+11785,
+11753,
+11668,
+11533,
+11352,
+11128,
+10864,
+10563,
+10227,
+9860,
+9464,
+9042,
+8596,
+8129,
+7644,
+7142,
+6626,
+6099,
+5562,
+5017,
+4467,
+3913,
+3357,
+2800,
+2245,
+1694,
+1146,
+605,
+71,
+-454,
+-970,
+-1474,
+-1966,
+-2446,
+-2911,
+-3362,
+-3797,
+-4215,
+-4617,
+-5001,
+-5367,
+-5714,
+-6043,
+-6352,
+-6641,
+-6910,
+-7160,
+-7389,
+-7598,
+-7786,
+-7954,
+-8102,
+-8230,
+-8338,
+-8426,
+-8495,
+-8545,
+-8575,
+-8587,
+-8582,
+-8558,
+-8517,
+-8460,
+-8386,
+-8297,
+-8192,
+-8073,
+-7940,
+-7794,
+-7635,
+-7464,
+-7281,
+-7088,
+-6885,
+-6672,
+-6450,
+-6221,
+-5984,
+-5740,
+-5490,
+-5235,
+-4975,
+-4711,
+-4443,
+-4173,
+-3901,
+-3627,
+-3352,
+-3077,
+-2803,
+-2529,
+-2257,
+-1986,
+-1719,
+-1454,
+-1193,
+-935,
+-683,
+-435,
+-192,
+45,
+276,
+501,
+719,
+930,
+1134,
+1331,
+1519,
+1700,
+1873,
+2038,
+2194,
+2342,
+2481,
+2611,
+2733,
+2846,
+2950,
+3046,
+3133,
+3211,
+3281,
+3343,
+3396,
+3441,
+3477,
+3506,
+3527,
+3541,
+3547,
+3546,
+3538,
+3523,
+3502,
+3474,
+3441,
+3401,
+3357,
+3307,
+3252,
+3192,
+3128,
+3060,
+2989,
+2913,
+2835,
+2753,
+2669,
+2583,
+2494,
+2403,
+2311,
+2218,
+2124,
+2028,
+1933,
+1837,
+1741,
+1645,
+1550,
+1455,
+1361,
+1268,
+1176,
+1086,
+997,
+910,
+825,
+741,
+660,
+581,
+504,
+429,
+357,
+287,
+220,
+156,
+94,
+35,
+-22,
+-75,
+-126,
+-175,
+-220,
+-263,
+-303,
+-341,
+-375,
+-408,
+-437,
+-464,
+-489,
+-511,
+-531,
+-548,
+-564,
+-577,
+-588,
+-597,
+-604,
+-610,
+-613,
+-615,
+-616,
+-614,
+-612,
+-608,
+-603,
+-597,
+-590,
+-582,
+-573,
+-563,
+-553,
+-542,
+-530,
+-518,
+-506,
+-493,
+-480,
+-466,
+-453,
+-439,
+-425,
+-411,
+-398,
+-384,
+-370,
+-357,
+-344,
+-331,
+-318,
+-305,
+-293,
+-281,
+-269,
+-258,
+-247,
+-237,
+-227,
+-217,
+-208,
+-199,
+-190,
+-182,
+-174,
+-167,
+-160,
+-154,
+-147,
+-142,
+-136,
+-131,
+-126,
+-121,
+-117,
+-113,
+-109,
+-106,
+-102,
+-99,
+-96,
+-93,
+-90,
+-87,
+-85,
+-82,
+-80,
+-78,
+-76,
+-74,
+-72,
+-70,
+-68,
+-66,
+-64,
+-62,
+-60,
+-58,
+-57,
+-55,
+-53,
+-51,
+-50,
+-48,
+-46,
+-45,
+-43,
+-41,
+-40,
+-38,
+-36,
+-35,
+-33,
+-31,
+-30,
+-28,
+-27,
+-25,
+-24,
+-22,
+-21,
+-20,
+-18,
+-17,
+-16,
+-15,
+-13,
+-12,
+-11,
+-10,
+-9,
+-9,
+-8,
+-7,
+-6,
+};
+}
diff --git a/services/audioflinger/audio-resampler/resampler_filter_coefficients_10042011.h b/services/audioflinger/audio-resampler/resampler_filter_coefficients_10042011.h
new file mode 100644
index 0000000..8c6a899
--- /dev/null
+++ b/services/audioflinger/audio-resampler/resampler_filter_coefficients_10042011.h
@@ -0,0 +1,2071 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <stdlib.h>
+
+namespace android {
+
+const int32_t resampler_filter_coefficients_10042011[] = {
+2075076504,
+2074870219,
+2074269557,
+2073262841,
+2071862786,
+2070051926,
+2067849110,
+2065243563,
+2062248465,
+2058846262,
+2055055548,
+2050866069,
+2046291635,
+2041315273,
+2035955897,
+2030204167,
+2024074532,
+2017550518,
+2010651175,
+2003368165,
+1995716923,
+1987682243,
+1979283938,
+1970514752,
+1961390076,
+1951894181,
+1942045775,
+1931837943,
+1921286728,
+1910377736,
+1899130344,
+1887538902,
+1875619770,
+1863358864,
+1850775104,
+1837863721,
+1824641940,
+1811097380,
+1797249776,
+1783095528,
+1768651291,
+1753903742,
+1738870726,
+1723548746,
+1707955054,
+1692078274,
+1675937190,
+1659529795,
+1642873313,
+1625956474,
+1608797063,
+1591393772,
+1573764495,
+1555899971,
+1537818785,
+1519520784,
+1501022796,
+1482314240,
+1463411160,
+1444313227,
+1425037741,
+1405576492,
+1385946622,
+1366149382,
+1346201706,
+1326095287,
+1305845828,
+1285455045,
+1264940308,
+1244295464,
+1223536951,
+1202667530,
+1181703085,
+1160635857,
+1139479271,
+1118235636,
+1096921134,
+1075530585,
+1054078577,
+1032568949,
+1011017224,
+989417949,
+967783970,
+946119336,
+924439752,
+902741900,
+881039249,
+859336703,
+837648175,
+815968557,
+794308053,
+772670861,
+751070988,
+729505896,
+707986911,
+686519594,
+665117063,
+643776375,
+622506966,
+601314359,
+580211607,
+559197735,
+538282662,
+517472516,
+496778402,
+476197491,
+455736426,
+435400430,
+415200497,
+395136166,
+375215078,
+355443561,
+335831583,
+316378199,
+297089183,
+277970603,
+259032151,
+240274557,
+221703918,
+203326638,
+185150446,
+167174280,
+149401179,
+131836509,
+114487708,
+97355714,
+80444376,
+63759844,
+47308498,
+31090767,
+15108809,
+-631654,
+-16124677,
+-31368536,
+-46360908,
+-61095999,
+-75569692,
+-89781876,
+-103732869,
+-117417959,
+-130833461,
+-143977734,
+-156850513,
+-169446641,
+-181763420,
+-193799687,
+-205556559,
+-217029409,
+-228216068,
+-239114500,
+-249725794,
+-260045485,
+-270072966,
+-279807538,
+-289252364,
+-298404017,
+-307262396,
+-315825804,
+-324097052,
+-332072584,
+-339753137,
+-347137398,
+-354229167,
+-361025450,
+-367527527,
+-373733643,
+-379647676,
+-385266970,
+-390594013,
+-395628043,
+-400374357,
+-404831217,
+-409001628,
+-412884357,
+-416484569,
+-419800667,
+-422836272,
+-425590412,
+-428068799,
+-430270358,
+-432199204,
+-433854305,
+-435241518,
+-436360214,
+-437215297,
+-437806349,
+-438139967,
+-438216244,
+-438040549,
+-437612462,
+-436938620,
+-436019455,
+-434860689,
+-433462013,
+-431830172,
+-429966019,
+-427875663,
+-425559045,
+-423023081,
+-420269108,
+-417303590,
+-414126712,
+-410745497,
+-407161766,
+-403382348,
+-399407797,
+-395245305,
+-390897144,
+-386370224,
+-381665062,
+-376788564,
+-371743279,
+-366536360,
+-361168782,
+-355647611,
+-349975843,
+-344160581,
+-338202705,
+-332108851,
+-325882239,
+-319530194,
+-313054213,
+-306461164,
+-299754744,
+-292942106,
+-286024571,
+-279008412,
+-271897436,
+-264698872,
+-257414606,
+-250051032,
+-242612307,
+-235105276,
+-227531464,
+-219896432,
+-212204319,
+-204462036,
+-196671840,
+-188839540,
+-180969700,
+-173068854,
+-165138974,
+-157185076,
+-149211664,
+-141225186,
+-133228184,
+-125225726,
+-117222535,
+-109224429,
+-101233397,
+-93253442,
+-85289050,
+-77345947,
+-69426846,
+-61535955,
+-53678071,
+-45858404,
+-38079310,
+-30344121,
+-22657427,
+-15024209,
+-7447312,
+69952,
+7522929,
+14907403,
+22221174,
+29462063,
+36625813,
+43708432,
+50707112,
+57619541,
+64441301,
+71168979,
+77800149,
+84333341,
+90764454,
+97090405,
+103308422,
+109417126,
+115412500,
+121292248,
+127054242,
+132698149,
+138220442,
+143619140,
+148891701,
+154037743,
+159053739,
+163938275,
+168689170,
+173306749,
+177787867,
+182131495,
+186335286,
+190399716,
+194321853,
+198101380,
+201736519,
+205228586,
+208575166,
+211776310,
+214830056,
+217737773,
+220497194,
+223108861,
+225571114,
+227885824,
+230051117,
+232067922,
+233934597,
+235653195,
+237222146,
+238642925,
+239914316,
+241038916,
+242015623,
+242846277,
+243529706,
+244068632,
+244462216,
+244712654,
+244818983,
+244784181,
+244607765,
+244292268,
+243836913,
+243244874,
+242516010,
+241653201,
+240655918,
+239527557,
+238268354,
+236881508,
+235366743,
+233727638,
+231964766,
+230081521,
+228077731,
+225956985,
+223720128,
+221370808,
+218909157,
+216338938,
+213661333,
+210880096,
+207995414,
+205010946,
+201928111,
+198750891,
+195479864,
+192118892,
+188669741,
+185136417,
+181519490,
+177822602,
+174047687,
+170198894,
+166277172,
+162286302,
+158228508,
+154107834,
+149925117,
+145683777,
+141386129,
+137036351,
+132635752,
+128187958,
+123695608,
+119162747,
+114590586,
+109982363,
+105340765,
+100669861,
+95971242,
+91248228,
+86503703,
+81741443,
+76962776,
+72170457,
+67367307,
+62557108,
+57741653,
+52923856,
+48106777,
+43293939,
+38486954,
+33688240,
+28900789,
+24128036,
+19371931,
+14634917,
+9920080,
+5230446,
+567618,
+-4066612,
+-8669336,
+-13237622,
+-17769457,
+-22262939,
+-26715017,
+-31123091,
+-35485370,
+-39800471,
+-44065504,
+-48278050,
+-52436071,
+-56538223,
+-60581634,
+-64564356,
+-68484740,
+-72342096,
+-76133828,
+-79858170,
+-83513191,
+-87098163,
+-90610469,
+-94048704,
+-97411174,
+-100697628,
+-103905676,
+-107034151,
+-110081227,
+-113046738,
+-115928406,
+-118725517,
+-121436605,
+-124062060,
+-126599916,
+-129049689,
+-131409767,
+-133680567,
+-135860199,
+-137948517,
+-139944122,
+-141847799,
+-143657917,
+-145374591,
+-146996418,
+-148524310,
+-149956828,
+-151294475,
+-152536152,
+-153683178,
+-154734431,
+-155690674,
+-156550825,
+-157316298,
+-157986149,
+-158561410,
+-159041176,
+-159427086,
+-159718451,
+-159916548,
+-160020582,
+-160032332,
+-159951337,
+-159779143,
+-159515147,
+-159161329,
+-158717499,
+-158185432,
+-157564678,
+-156857347,
+-156063474,
+-155185008,
+-154221601,
+-153175426,
+-152046727,
+-150837654,
+-149548057,
+-148180246,
+-146734704,
+-145213706,
+-143617181,
+-141947434,
+-140205146,
+-138392776,
+-136510514,
+-134560819,
+-132544622,
+-130464445,
+-128320507,
+-126115178,
+-123849532,
+-121526221,
+-119145720,
+-116710510,
+-114221879,
+-111682456,
+-109092675,
+-106454825,
+-103770291,
+-101041818,
+-98270160,
+-95457755,
+-92606223,
+-89718259,
+-86794577,
+-83837395,
+-80848397,
+-77830331,
+-74784179,
+-71712237,
+-68616354,
+-65499123,
+-62361390,
+-59205117,
+-56032152,
+-52845129,
+-49645224,
+-46434530,
+-43215084,
+-39989380,
+-36758496,
+-33524217,
+-30288565,
+-27054001,
+-23821849,
+-20593926,
+-17372347,
+-14159320,
+-10955954,
+-7763647,
+-4584416,
+-1420431,
+1726908,
+4856115,
+7965053,
+11051765,
+14114989,
+17153587,
+20165512,
+23148908,
+26102328,
+29024647,
+31913805,
+34768253,
+37586799,
+40368755,
+43112232,
+45815788,
+48478013,
+51098183,
+53674369,
+56205373,
+58689945,
+61127693,
+63516834,
+65856322,
+68144797,
+70381920,
+72565965,
+74696201,
+76771518,
+78791971,
+80756044,
+82663155,
+84512076,
+86302872,
+88034067,
+89705316,
+91315544,
+92865092,
+94352657,
+95778072,
+97140241,
+98439585,
+99674922,
+100846363,
+101953029,
+102995643,
+103973242,
+104886114,
+105733366,
+106515783,
+107232507,
+107884029,
+108469586,
+108990146,
+109445031,
+109834907,
+110159075,
+110418598,
+110612956,
+110743021,
+110808247,
+110809873,
+110747573,
+110622392,
+110433872,
+110183341,
+109870630,
+109496925,
+109061853,
+108566821,
+108011814,
+107398172,
+106725651,
+105995758,
+105208649,
+104365776,
+103466973,
+102513780,
+101506507,
+100446746,
+99334505,
+98171433,
+96958015,
+95695913,
+94385172,
+93027406,
+91623219,
+90174378,
+88681103,
+87145094,
+85567114,
+83948941,
+82290788,
+80594255,
+78860190,
+77090470,
+75285527,
+73447070,
+71576122,
+69674546,
+67742761,
+65782346,
+63794384,
+61780793,
+59742181,
+57680191,
+55596034,
+53491542,
+51367245,
+49224577,
+47064766,
+44889688,
+42700109,
+40497558,
+38283410,
+36059459,
+33826411,
+31585598,
+29338397,
+27086596,
+24831081,
+22573215,
+20314456,
+18056430,
+15799888,
+13545910,
+11295904,
+9051483,
+6813612,
+4583444,
+2362482,
+152205,
+-2046514,
+-4232760,
+-6405078,
+-8562051,
+-10702661,
+-12825994,
+-14930573,
+-17015184,
+-19078982,
+-21121361,
+-23140947,
+-25136591,
+-27107282,
+-29052375,
+-30970456,
+-32860543,
+-34721731,
+-36553615,
+-38354874,
+-40124623,
+-41861868,
+-43566233,
+-45236425,
+-46871781,
+-48471484,
+-50035443,
+-51562506,
+-53052109,
+-54503334,
+-55916090,
+-57289239,
+-58622387,
+-59914726,
+-61166369,
+-62376298,
+-63544241,
+-64669360,
+-65751822,
+-66790682,
+-67785875,
+-68736719,
+-69643614,
+-70505769,
+-71323237,
+-72095315,
+-72822435,
+-73503872,
+-74139832,
+-74729705,
+-75274073,
+-75772337,
+-76224828,
+-76630970,
+-76991410,
+-77305656,
+-77574197,
+-77796578,
+-77973591,
+-78104888,
+-78191082,
+-78231765,
+-78227787,
+-78178906,
+-78085845,
+-77948266,
+-77767093,
+-77542200,
+-77274423,
+-76963506,
+-76610446,
+-76215234,
+-75778805,
+-75300971,
+-74782775,
+-74224327,
+-73626669,
+-72989720,
+-72314602,
+-71601546,
+-70851655,
+-70064886,
+-69242354,
+-68384382,
+-67492158,
+-66565755,
+-65606354,
+-64614392,
+-63591082,
+-62536507,
+-61451798,
+-60337466,
+-59194800,
+-58024034,
+-56826376,
+-55602460,
+-54353584,
+-53079977,
+-51782773,
+-50462662,
+-49120984,
+-47758105,
+-46375208,
+-44973078,
+-43553013,
+-42115335,
+-40661095,
+-39191102,
+-37706696,
+-36208364,
+-34697230,
+-33174211,
+-31640600,
+-30096851,
+-28543956,
+-26982847,
+-25414822,
+-23840464,
+-22260795,
+-20676812,
+-19089709,
+-17499984,
+-15908468,
+-14316132,
+-12724175,
+-11133249,
+-9544240,
+-7958198,
+-6376234,
+-4798939,
+-3227038,
+-1661555,
+-103565,
+1446230,
+2987101,
+4517998,
+6037984,
+7546475,
+9042956,
+10526443,
+11996036,
+13451023,
+14890857,
+16314514,
+17721207,
+19110300,
+20481414,
+21833586,
+23166092,
+24478220,
+25769611,
+27039309,
+28286749,
+29511342,
+30712939,
+31890678,
+33044057,
+34172405,
+35275563,
+36352672,
+37403349,
+38427003,
+39423626,
+40392440,
+41333144,
+42245116,
+43128383,
+43982211,
+44806449,
+45600591,
+46364840,
+47098569,
+47801711,
+48473727,
+49114838,
+49724455,
+50302623,
+50848874,
+51363545,
+51846135,
+52296779,
+52715020,
+53101240,
+53455010,
+53776585,
+54065600,
+54322557,
+54547131,
+54739663,
+54899810,
+55028111,
+55124307,
+55188827,
+55221380,
+55222572,
+55192228,
+55130859,
+55038225,
+54914980,
+54761033,
+54576974,
+54362622,
+54118682,
+53845150,
+53542695,
+53211202,
+52851427,
+52463450,
+52047991,
+51604968,
+51135146,
+50638673,
+50116337,
+49568129,
+48994861,
+48396765,
+47774658,
+47128548,
+46459228,
+45766990,
+45052710,
+44316493,
+43559189,
+42781174,
+41983339,
+41165794,
+40329347,
+39474419,
+38601939,
+37712110,
+36805777,
+35883432,
+34945984,
+33993615,
+33027089,
+32046926,
+31054070,
+30048815,
+29031979,
+28004160,
+26966277,
+25918608,
+24861885,
+23796723,
+22724052,
+21644243,
+20558050,
+19466141,
+18369382,
+17268088,
+16162890,
+15054445,
+13943628,
+12830865,
+11716830,
+10602238,
+9487911,
+8374236,
+7261776,
+6151235,
+5043417,
+3938790,
+2837924,
+1741550,
+650377,
+-435204,
+-1514773,
+-2587638,
+-3653109,
+-4710700,
+-5759963,
+-6800171,
+-7830712,
+-8851149,
+-9861153,
+-10860035,
+-11847221,
+-12822216,
+-13784698,
+-14733981,
+-15669597,
+-16591140,
+-17498438,
+-18390866,
+-19267997,
+-20129356,
+-20974762,
+-21803581,
+-22615471,
+-23410012,
+-24187134,
+-24946258,
+-25687095,
+-26409195,
+-27112509,
+-27796483,
+-28460937,
+-29105505,
+-29730269,
+-30334749,
+-30918819,
+-31482081,
+-32024624,
+-32545988,
+-33046126,
+-33524693,
+-33981867,
+-34417247,
+-34830850,
+-35222329,
+-35591891,
+-35939181,
+-36264307,
+-36566990,
+-36847536,
+-37105661,
+-37341533,
+-37554878,
+-37746021,
+-37914721,
+-38061211,
+-38185256,
+-38287239,
+-38366977,
+-38424762,
+-38460388,
+-38474270,
+-38466280,
+-38436775,
+-38385595,
+-38313205,
+-38219543,
+-38105021,
+-37969515,
+-37813522,
+-37637035,
+-37440507,
+-37223843,
+-36987554,
+-36731686,
+-36456739,
+-36162666,
+-35850010,
+-35518873,
+-35169788,
+-34802724,
+-34418227,
+-34016443,
+-33597949,
+-33162777,
+-32711507,
+-32244345,
+-31761885,
+-31264164,
+-30751745,
+-30224868,
+-29684158,
+-29129713,
+-28562123,
+-27981679,
+-27389002,
+-26784181,
+-26167762,
+-25540059,
+-24901722,
+-24252917,
+-23594223,
+-22926012,
+-22248923,
+-21563113,
+-20869110,
+-20167303,
+-19458342,
+-18742448,
+-18020168,
+-17291929,
+-16558346,
+-15819604,
+-15076174,
+-14328481,
+-13577150,
+-12822445,
+-12064865,
+-11304882,
+-10543086,
+-9779720,
+-9015209,
+-8250021,
+-7484741,
+-6719667,
+-5955234,
+-5191932,
+-4430285,
+-3670541,
+-2913036,
+-2158236,
+-1406657,
+-658617,
+85527,
+825280,
+1560174,
+2289926,
+3014260,
+3732701,
+4444806,
+5150245,
+5848747,
+6539832,
+7223129,
+7898368,
+8565383,
+9223733,
+9873071,
+10513075,
+11143565,
+11764092,
+12374365,
+12974099,
+13563194,
+14141234,
+14707964,
+15263070,
+15806466,
+16337748,
+16856735,
+17363175,
+17857079,
+18338088,
+18806059,
+19260708,
+19702046,
+20129723,
+20543652,
+20943584,
+21329597,
+21701383,
+22058894,
+22401875,
+22730421,
+23044252,
+23343385,
+23627618,
+23897120,
+24151661,
+24391299,
+24615824,
+24825417,
+25019868,
+25199285,
+25363488,
+25512702,
+25646760,
+25765809,
+25869680,
+25958622,
+26032502,
+26091517,
+26135536,
+26164850,
+26179375,
+26179344,
+26164644,
+26135585,
+26092113,
+26034498,
+25962646,
+25876887,
+25777203,
+25663899,
+25536906,
+25396578,
+25242934,
+25076305,
+24896644,
+24704311,
+24499364,
+24282163,
+24052697,
+23811348,
+23558211,
+23293664,
+23017702,
+22730703,
+22432787,
+22124357,
+21805445,
+21476448,
+21137523,
+20789074,
+20431134,
+20064079,
+19688086,
+19303582,
+18910646,
+18509679,
+18100894,
+17684716,
+17261223,
+16830785,
+16393630,
+15950197,
+15500602,
+15045231,
+14584340,
+14118348,
+13647355,
+13171699,
+12691641,
+12207609,
+11719754,
+11228437,
+10733948,
+10236700,
+9736830,
+9234652,
+8730459,
+8224662,
+7717439,
+7209110,
+6699986,
+6190443,
+5680626,
+5170792,
+4661242,
+4152348,
+3644304,
+3137385,
+2631912,
+2128229,
+1626510,
+1126973,
+629931,
+135715,
+-355469,
+-843402,
+-1327763,
+-1808270,
+-2284755,
+-2757069,
+-3224916,
+-3688026,
+-4146190,
+-4599250,
+-5046898,
+-5488901,
+-5925074,
+-6355314,
+-6779333,
+-7196918,
+-7607862,
+-8012069,
+-8409254,
+-8799255,
+-9181907,
+-9557181,
+-9924822,
+-10284691,
+-10636595,
+-10980501,
+-11316157,
+-11643459,
+-11962240,
+-12272514,
+-12574056,
+-12866786,
+-13150528,
+-13425307,
+-13690910,
+-13947306,
+-14194356,
+-14432139,
+-14660477,
+-14879363,
+-15088645,
+-15288408,
+-15478483,
+-15658898,
+-15829522,
+-15990474,
+-16141613,
+-16282992,
+-16414484,
+-16536222,
+-16648083,
+-16750160,
+-16842353,
+-16924831,
+-16997506,
+-17060493,
+-17113697,
+-17157297,
+-17191222,
+-17215613,
+-17230389,
+-17235750,
+-17231648,
+-17218249,
+-17195484,
+-17163567,
+-17122473,
+-17072392,
+-17013271,
+-16945340,
+-16868599,
+-16783258,
+-16689284,
+-16586915,
+-16476178,
+-16357294,
+-16230239,
+-16095254,
+-15952382,
+-15801866,
+-15643700,
+-15478137,
+-15305245,
+-15125274,
+-14938221,
+-14744336,
+-14543701,
+-14336583,
+-14123005,
+-13903232,
+-13677369,
+-13445685,
+-13208205,
+-12965179,
+-12716724,
+-12463120,
+-12204418,
+-11940874,
+-11672628,
+-11399952,
+-11122887,
+-10841668,
+-10556438,
+-10267479,
+-9974863,
+-9678839,
+-9379572,
+-9077334,
+-8772193,
+-8464370,
+-8154033,
+-7841459,
+-7526740,
+-7210102,
+-6891729,
+-6571875,
+-6250617,
+-5928143,
+-5604631,
+-5280339,
+-4955374,
+-4629936,
+-4304221,
+-3978468,
+-3652773,
+-3327303,
+-3002250,
+-2677848,
+-2354215,
+-2031520,
+-1709962,
+-1389747,
+-1070968,
+-753751,
+-438281,
+-124760,
+186691,
+495939,
+802786,
+1107056,
+1408639,
+1707439,
+2003270,
+2295964,
+2585396,
+2871472,
+3154006,
+3432861,
+3707940,
+3979193,
+4246453,
+4509594,
+4768498,
+5023110,
+5273258,
+5518843,
+5759760,
+5995988,
+6227371,
+6453823,
+6675229,
+6891575,
+7102708,
+7308575,
+7509086,
+7704267,
+7893987,
+8078205,
+8256820,
+8429855,
+8597183,
+8758786,
+8914577,
+9064605,
+9208760,
+9347039,
+9479353,
+9605758,
+9726154,
+9840566,
+9948924,
+10051316,
+10147660,
+10237999,
+10322257,
+10400525,
+10472731,
+10538934,
+10599070,
+10653248,
+10701410,
+10743630,
+10779849,
+10810183,
+10834587,
+10853155,
+10865840,
+10872775,
+10873933,
+10869421,
+10859197,
+10843400,
+10822013,
+10795156,
+10762793,
+10725068,
+10681980,
+10633658,
+10580078,
+10521391,
+10457608,
+10388869,
+10315156,
+10236621,
+10153290,
+10065313,
+9972683,
+9875561,
+9773986,
+9668111,
+9557933,
+9443609,
+9325184,
+9202823,
+9076535,
+8946481,
+8812721,
+8675419,
+8534581,
+8390359,
+8242821,
+8092134,
+7938325,
+7781551,
+7621894,
+7459519,
+7294449,
+7126832,
+6956750,
+6784374,
+6609741,
+6433003,
+6254252,
+6073651,
+5891227,
+5707114,
+5521403,
+5334259,
+5145731,
+4955957,
+4765041,
+4573140,
+4380296,
+4186630,
+3992245,
+3797298,
+3601843,
+3406004,
+3209891,
+3013645,
+2817308,
+2620977,
+2424757,
+2228787,
+2033128,
+1837884,
+1643168,
+1449107,
+1255755,
+1063192,
+871528,
+680885,
+491329,
+302942,
+115833,
+-69891,
+-254183,
+-436990,
+-618208,
+-797740,
+-975518,
+-1151487,
+-1325539,
+-1497588,
+-1667578,
+-1835474,
+-2001175,
+-2164603,
+-2325693,
+-2484411,
+-2640658,
+-2794375,
+-2945514,
+-3094068,
+-3239949,
+-3383105,
+-3523475,
+-3661049,
+-3795739,
+-3927507,
+-4056301,
+-4182128,
+-4304909,
+-4424616,
+-4541189,
+-4654642,
+-4764898,
+-4871946,
+-4975742,
+-5076322,
+-5173620,
+-5267633,
+-5358312,
+-5445689,
+-5529702,
+-5610360,
+-5687620,
+-5761528,
+-5832032,
+-5899149,
+-5962833,
+-6023137,
+-6080011,
+-6133489,
+-6183535,
+-6230216,
+-6273495,
+-6313411,
+-6349927,
+-6383111,
+-6412929,
+-6439430,
+-6462582,
+-6482459,
+-6499037,
+-6512371,
+-6522432,
+-6529297,
+-6532949,
+-6533453,
+-6530785,
+-6525030,
+-6516181,
+-6504306,
+-6489387,
+-6471510,
+-6450672,
+-6426949,
+-6400323,
+-6370884,
+-6338633,
+-6303653,
+-6265930,
+-6225556,
+-6182542,
+-6136972,
+-6088835,
+-6038222,
+-5985148,
+-5929704,
+-5871883,
+-5811781,
+-5749418,
+-5684887,
+-5618180,
+-5549390,
+-5478541,
+-5405727,
+-5330951,
+-5254303,
+-5175817,
+-5095584,
+-5013604,
+-4929960,
+-4844689,
+-4757882,
+-4669550,
+-4579780,
+-4488613,
+-4396142,
+-4302370,
+-4207380,
+-4111213,
+-4013962,
+-3915640,
+-3816329,
+-3716076,
+-3614967,
+-3513009,
+-3410272,
+-3306801,
+-3202684,
+-3097938,
+-2992636,
+-2886829,
+-2780600,
+-2673962,
+-2566977,
+-2459696,
+-2352199,
+-2244507,
+-2136684,
+-2028782,
+-1920874,
+-1812971,
+-1705121,
+-1597373,
+-1489799,
+-1382421,
+-1275290,
+-1168459,
+-1061994,
+-955913,
+-850253,
+-745067,
+-640414,
+-536322,
+-432828,
+-329984,
+-227841,
+-126414,
+-25726,
+74177,
+173245,
+271455,
+368780,
+465170,
+560585,
+655003,
+748412,
+840765,
+932024,
+1022164,
+1111173,
+1199003,
+1285630,
+1371035,
+1455222,
+1538151,
+1619799,
+1700140,
+1779174,
+1856860,
+1933182,
+2008118,
+2081679,
+2153827,
+2224550,
+2293824,
+2361659,
+2428020,
+2492903,
+2556292,
+2618211,
+2678631,
+2737549,
+2794945,
+2850839,
+2905201,
+2958036,
+3009325,
+3059097,
+3107325,
+3154018,
+3199156,
+3242768,
+3284829,
+3325357,
+3364336,
+3401806,
+3437747,
+3472179,
+3505082,
+3536494,
+3566396,
+3594812,
+3621723,
+3647174,
+3671149,
+3693673,
+3714729,
+3734362,
+3752557,
+3769346,
+3784715,
+3798715,
+3811334,
+3822606,
+3832516,
+3841112,
+3848384,
+3854368,
+3859049,
+3862479,
+3864649,
+3865599,
+3865314,
+3863845,
+3861188,
+3857383,
+3852418,
+3846346,
+3839164,
+3830915,
+3821584,
+3811225,
+3799836,
+3787460,
+3774084,
+3759760,
+3744487,
+3728310,
+3711218,
+3693263,
+3674447,
+3654814,
+3634352,
+3613113,
+3591098,
+3568353,
+3544866,
+3520689,
+3495824,
+3470316,
+3444153,
+3417383,
+3390012,
+3362082,
+3333586,
+3304570,
+3275042,
+3245044,
+3214563,
+3183645,
+3152295,
+3120556,
+3088416,
+3055921,
+3023078,
+2989927,
+2956457,
+2922708,
+2888688,
+2854437,
+2819945,
+2785255,
+2750373,
+2715338,
+2680135,
+2644802,
+2609344,
+2573798,
+2538153,
+2502446,
+2466684,
+2430901,
+2395085,
+2359269,
+2323458,
+2287688,
+2251947,
+2216270,
+2180661,
+2145152,
+2109728,
+2074417,
+2039222,
+2004173,
+1969258,
+1934504,
+1899918,
+1865524,
+1831311,
+1797303,
+1763503,
+1729936,
+1696594,
+1663499,
+1630656,
+1598085,
+1565774,
+1533740,
+1501984,
+1470527,
+1439358,
+1408495,
+1377941,
+1347715,
+1317803,
+1288221,
+1258970,
+1230067,
+1201504,
+1173294,
+1145440,
+1117954,
+1090824,
+1064057,
+1037655,
+1011629,
+985969,
+960683,
+935774,
+911250,
+887101,
+863334,
+839947,
+816951,
+794337,
+772110,
+750271,
+728827,
+707764,
+687085,
+666787,
+646876,
+627343,
+608189,
+589415,
+571023,
+553003,
+535356,
+518081,
+501181,
+484646,
+468479,
+452677,
+437242,
+422161,
+407434,
+393055,
+379026,
+365337,
+351987,
+338974,
+326296,
+313944,
+301916,
+290208,
+278820,
+267744,
+256978,
+246518,
+236362,
+226500,
+216928,
+207640,
+198636,
+189906,
+181447,
+173255,
+165327,
+157655,
+150236,
+143064,
+136137,
+129449,
+122995,
+116772,
+110776,
+104999,
+99436,
+94081,
+88932,
+83981,
+79224,
+74658,
+70277,
+66077,
+62052,
+58198,
+54512,
+50989,
+47624,
+44413,
+41353,
+38438,
+35663,
+33023,
+30515,
+28134,
+25876,
+23736,
+21712,
+19799,
+17992,
+16290,
+14687,
+13182,
+11769,
+10446,
+9210,
+8057,
+6982,
+5983,
+5056,
+4198,
+3407,
+2678,
+2010,
+1400,
+844,
+341,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+0,
+};
+}