asl_recognizer.html 481 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434
  1. <!DOCTYPE html>
  2. <html>
  3. <head><meta charset="utf-8" />
  4. <title>asl_recognizer</title>
  5. <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
  6. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  7. <style type="text/css">
  8. /*!
  9. *
  10. * Twitter Bootstrap
  11. *
  12. */
  13. /*!
  14. * Bootstrap v3.3.6 (http://getbootstrap.com)
  15. * Copyright 2011-2015 Twitter, Inc.
  16. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
  17. */
  18. /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
  19. html {
  20. font-family: sans-serif;
  21. -ms-text-size-adjust: 100%;
  22. -webkit-text-size-adjust: 100%;
  23. }
  24. body {
  25. margin: 0;
  26. }
  27. article,
  28. aside,
  29. details,
  30. figcaption,
  31. figure,
  32. footer,
  33. header,
  34. hgroup,
  35. main,
  36. menu,
  37. nav,
  38. section,
  39. summary {
  40. display: block;
  41. }
  42. audio,
  43. canvas,
  44. progress,
  45. video {
  46. display: inline-block;
  47. vertical-align: baseline;
  48. }
  49. audio:not([controls]) {
  50. display: none;
  51. height: 0;
  52. }
  53. [hidden],
  54. template {
  55. display: none;
  56. }
  57. a {
  58. background-color: transparent;
  59. }
  60. a:active,
  61. a:hover {
  62. outline: 0;
  63. }
  64. abbr[title] {
  65. border-bottom: 1px dotted;
  66. }
  67. b,
  68. strong {
  69. font-weight: bold;
  70. }
  71. dfn {
  72. font-style: italic;
  73. }
  74. h1 {
  75. font-size: 2em;
  76. margin: 0.67em 0;
  77. }
  78. mark {
  79. background: #ff0;
  80. color: #000;
  81. }
  82. small {
  83. font-size: 80%;
  84. }
  85. sub,
  86. sup {
  87. font-size: 75%;
  88. line-height: 0;
  89. position: relative;
  90. vertical-align: baseline;
  91. }
  92. sup {
  93. top: -0.5em;
  94. }
  95. sub {
  96. bottom: -0.25em;
  97. }
  98. img {
  99. border: 0;
  100. }
  101. svg:not(:root) {
  102. overflow: hidden;
  103. }
  104. figure {
  105. margin: 1em 40px;
  106. }
  107. hr {
  108. box-sizing: content-box;
  109. height: 0;
  110. }
  111. pre {
  112. overflow: auto;
  113. }
  114. code,
  115. kbd,
  116. pre,
  117. samp {
  118. font-family: monospace, monospace;
  119. font-size: 1em;
  120. }
  121. button,
  122. input,
  123. optgroup,
  124. select,
  125. textarea {
  126. color: inherit;
  127. font: inherit;
  128. margin: 0;
  129. }
  130. button {
  131. overflow: visible;
  132. }
  133. button,
  134. select {
  135. text-transform: none;
  136. }
  137. button,
  138. html input[type="button"],
  139. input[type="reset"],
  140. input[type="submit"] {
  141. -webkit-appearance: button;
  142. cursor: pointer;
  143. }
  144. button[disabled],
  145. html input[disabled] {
  146. cursor: default;
  147. }
  148. button::-moz-focus-inner,
  149. input::-moz-focus-inner {
  150. border: 0;
  151. padding: 0;
  152. }
  153. input {
  154. line-height: normal;
  155. }
  156. input[type="checkbox"],
  157. input[type="radio"] {
  158. box-sizing: border-box;
  159. padding: 0;
  160. }
  161. input[type="number"]::-webkit-inner-spin-button,
  162. input[type="number"]::-webkit-outer-spin-button {
  163. height: auto;
  164. }
  165. input[type="search"] {
  166. -webkit-appearance: textfield;
  167. box-sizing: content-box;
  168. }
  169. input[type="search"]::-webkit-search-cancel-button,
  170. input[type="search"]::-webkit-search-decoration {
  171. -webkit-appearance: none;
  172. }
  173. fieldset {
  174. border: 1px solid #c0c0c0;
  175. margin: 0 2px;
  176. padding: 0.35em 0.625em 0.75em;
  177. }
  178. legend {
  179. border: 0;
  180. padding: 0;
  181. }
  182. textarea {
  183. overflow: auto;
  184. }
  185. optgroup {
  186. font-weight: bold;
  187. }
  188. table {
  189. border-collapse: collapse;
  190. border-spacing: 0;
  191. }
  192. td,
  193. th {
  194. padding: 0;
  195. }
  196. /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
  197. @media print {
  198. *,
  199. *:before,
  200. *:after {
  201. background: transparent !important;
  202. color: #000 !important;
  203. box-shadow: none !important;
  204. text-shadow: none !important;
  205. }
  206. a,
  207. a:visited {
  208. text-decoration: underline;
  209. }
  210. a[href]:after {
  211. content: " (" attr(href) ")";
  212. }
  213. abbr[title]:after {
  214. content: " (" attr(title) ")";
  215. }
  216. a[href^="#"]:after,
  217. a[href^="javascript:"]:after {
  218. content: "";
  219. }
  220. pre,
  221. blockquote {
  222. border: 1px solid #999;
  223. page-break-inside: avoid;
  224. }
  225. thead {
  226. display: table-header-group;
  227. }
  228. tr,
  229. img {
  230. page-break-inside: avoid;
  231. }
  232. img {
  233. max-width: 100% !important;
  234. }
  235. p,
  236. h2,
  237. h3 {
  238. orphans: 3;
  239. widows: 3;
  240. }
  241. h2,
  242. h3 {
  243. page-break-after: avoid;
  244. }
  245. .navbar {
  246. display: none;
  247. }
  248. .btn > .caret,
  249. .dropup > .btn > .caret {
  250. border-top-color: #000 !important;
  251. }
  252. .label {
  253. border: 1px solid #000;
  254. }
  255. .table {
  256. border-collapse: collapse !important;
  257. }
  258. .table td,
  259. .table th {
  260. background-color: #fff !important;
  261. }
  262. .table-bordered th,
  263. .table-bordered td {
  264. border: 1px solid #ddd !important;
  265. }
  266. }
  267. @font-face {
  268. font-family: 'Glyphicons Halflings';
  269. src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  270. src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
  271. }
  272. .glyphicon {
  273. position: relative;
  274. top: 1px;
  275. display: inline-block;
  276. font-family: 'Glyphicons Halflings';
  277. font-style: normal;
  278. font-weight: normal;
  279. line-height: 1;
  280. -webkit-font-smoothing: antialiased;
  281. -moz-osx-font-smoothing: grayscale;
  282. }
  283. .glyphicon-asterisk:before {
  284. content: "\002a";
  285. }
  286. .glyphicon-plus:before {
  287. content: "\002b";
  288. }
  289. .glyphicon-euro:before,
  290. .glyphicon-eur:before {
  291. content: "\20ac";
  292. }
  293. .glyphicon-minus:before {
  294. content: "\2212";
  295. }
  296. .glyphicon-cloud:before {
  297. content: "\2601";
  298. }
  299. .glyphicon-envelope:before {
  300. content: "\2709";
  301. }
  302. .glyphicon-pencil:before {
  303. content: "\270f";
  304. }
  305. .glyphicon-glass:before {
  306. content: "\e001";
  307. }
  308. .glyphicon-music:before {
  309. content: "\e002";
  310. }
  311. .glyphicon-search:before {
  312. content: "\e003";
  313. }
  314. .glyphicon-heart:before {
  315. content: "\e005";
  316. }
  317. .glyphicon-star:before {
  318. content: "\e006";
  319. }
  320. .glyphicon-star-empty:before {
  321. content: "\e007";
  322. }
  323. .glyphicon-user:before {
  324. content: "\e008";
  325. }
  326. .glyphicon-film:before {
  327. content: "\e009";
  328. }
  329. .glyphicon-th-large:before {
  330. content: "\e010";
  331. }
  332. .glyphicon-th:before {
  333. content: "\e011";
  334. }
  335. .glyphicon-th-list:before {
  336. content: "\e012";
  337. }
  338. .glyphicon-ok:before {
  339. content: "\e013";
  340. }
  341. .glyphicon-remove:before {
  342. content: "\e014";
  343. }
  344. .glyphicon-zoom-in:before {
  345. content: "\e015";
  346. }
  347. .glyphicon-zoom-out:before {
  348. content: "\e016";
  349. }
  350. .glyphicon-off:before {
  351. content: "\e017";
  352. }
  353. .glyphicon-signal:before {
  354. content: "\e018";
  355. }
  356. .glyphicon-cog:before {
  357. content: "\e019";
  358. }
  359. .glyphicon-trash:before {
  360. content: "\e020";
  361. }
  362. .glyphicon-home:before {
  363. content: "\e021";
  364. }
  365. .glyphicon-file:before {
  366. content: "\e022";
  367. }
  368. .glyphicon-time:before {
  369. content: "\e023";
  370. }
  371. .glyphicon-road:before {
  372. content: "\e024";
  373. }
  374. .glyphicon-download-alt:before {
  375. content: "\e025";
  376. }
  377. .glyphicon-download:before {
  378. content: "\e026";
  379. }
  380. .glyphicon-upload:before {
  381. content: "\e027";
  382. }
  383. .glyphicon-inbox:before {
  384. content: "\e028";
  385. }
  386. .glyphicon-play-circle:before {
  387. content: "\e029";
  388. }
  389. .glyphicon-repeat:before {
  390. content: "\e030";
  391. }
  392. .glyphicon-refresh:before {
  393. content: "\e031";
  394. }
  395. .glyphicon-list-alt:before {
  396. content: "\e032";
  397. }
  398. .glyphicon-lock:before {
  399. content: "\e033";
  400. }
  401. .glyphicon-flag:before {
  402. content: "\e034";
  403. }
  404. .glyphicon-headphones:before {
  405. content: "\e035";
  406. }
  407. .glyphicon-volume-off:before {
  408. content: "\e036";
  409. }
  410. .glyphicon-volume-down:before {
  411. content: "\e037";
  412. }
  413. .glyphicon-volume-up:before {
  414. content: "\e038";
  415. }
  416. .glyphicon-qrcode:before {
  417. content: "\e039";
  418. }
  419. .glyphicon-barcode:before {
  420. content: "\e040";
  421. }
  422. .glyphicon-tag:before {
  423. content: "\e041";
  424. }
  425. .glyphicon-tags:before {
  426. content: "\e042";
  427. }
  428. .glyphicon-book:before {
  429. content: "\e043";
  430. }
  431. .glyphicon-bookmark:before {
  432. content: "\e044";
  433. }
  434. .glyphicon-print:before {
  435. content: "\e045";
  436. }
  437. .glyphicon-camera:before {
  438. content: "\e046";
  439. }
  440. .glyphicon-font:before {
  441. content: "\e047";
  442. }
  443. .glyphicon-bold:before {
  444. content: "\e048";
  445. }
  446. .glyphicon-italic:before {
  447. content: "\e049";
  448. }
  449. .glyphicon-text-height:before {
  450. content: "\e050";
  451. }
  452. .glyphicon-text-width:before {
  453. content: "\e051";
  454. }
  455. .glyphicon-align-left:before {
  456. content: "\e052";
  457. }
  458. .glyphicon-align-center:before {
  459. content: "\e053";
  460. }
  461. .glyphicon-align-right:before {
  462. content: "\e054";
  463. }
  464. .glyphicon-align-justify:before {
  465. content: "\e055";
  466. }
  467. .glyphicon-list:before {
  468. content: "\e056";
  469. }
  470. .glyphicon-indent-left:before {
  471. content: "\e057";
  472. }
  473. .glyphicon-indent-right:before {
  474. content: "\e058";
  475. }
  476. .glyphicon-facetime-video:before {
  477. content: "\e059";
  478. }
  479. .glyphicon-picture:before {
  480. content: "\e060";
  481. }
  482. .glyphicon-map-marker:before {
  483. content: "\e062";
  484. }
  485. .glyphicon-adjust:before {
  486. content: "\e063";
  487. }
  488. .glyphicon-tint:before {
  489. content: "\e064";
  490. }
  491. .glyphicon-edit:before {
  492. content: "\e065";
  493. }
  494. .glyphicon-share:before {
  495. content: "\e066";
  496. }
  497. .glyphicon-check:before {
  498. content: "\e067";
  499. }
  500. .glyphicon-move:before {
  501. content: "\e068";
  502. }
  503. .glyphicon-step-backward:before {
  504. content: "\e069";
  505. }
  506. .glyphicon-fast-backward:before {
  507. content: "\e070";
  508. }
  509. .glyphicon-backward:before {
  510. content: "\e071";
  511. }
  512. .glyphicon-play:before {
  513. content: "\e072";
  514. }
  515. .glyphicon-pause:before {
  516. content: "\e073";
  517. }
  518. .glyphicon-stop:before {
  519. content: "\e074";
  520. }
  521. .glyphicon-forward:before {
  522. content: "\e075";
  523. }
  524. .glyphicon-fast-forward:before {
  525. content: "\e076";
  526. }
  527. .glyphicon-step-forward:before {
  528. content: "\e077";
  529. }
  530. .glyphicon-eject:before {
  531. content: "\e078";
  532. }
  533. .glyphicon-chevron-left:before {
  534. content: "\e079";
  535. }
  536. .glyphicon-chevron-right:before {
  537. content: "\e080";
  538. }
  539. .glyphicon-plus-sign:before {
  540. content: "\e081";
  541. }
  542. .glyphicon-minus-sign:before {
  543. content: "\e082";
  544. }
  545. .glyphicon-remove-sign:before {
  546. content: "\e083";
  547. }
  548. .glyphicon-ok-sign:before {
  549. content: "\e084";
  550. }
  551. .glyphicon-question-sign:before {
  552. content: "\e085";
  553. }
  554. .glyphicon-info-sign:before {
  555. content: "\e086";
  556. }
  557. .glyphicon-screenshot:before {
  558. content: "\e087";
  559. }
  560. .glyphicon-remove-circle:before {
  561. content: "\e088";
  562. }
  563. .glyphicon-ok-circle:before {
  564. content: "\e089";
  565. }
  566. .glyphicon-ban-circle:before {
  567. content: "\e090";
  568. }
  569. .glyphicon-arrow-left:before {
  570. content: "\e091";
  571. }
  572. .glyphicon-arrow-right:before {
  573. content: "\e092";
  574. }
  575. .glyphicon-arrow-up:before {
  576. content: "\e093";
  577. }
  578. .glyphicon-arrow-down:before {
  579. content: "\e094";
  580. }
  581. .glyphicon-share-alt:before {
  582. content: "\e095";
  583. }
  584. .glyphicon-resize-full:before {
  585. content: "\e096";
  586. }
  587. .glyphicon-resize-small:before {
  588. content: "\e097";
  589. }
  590. .glyphicon-exclamation-sign:before {
  591. content: "\e101";
  592. }
  593. .glyphicon-gift:before {
  594. content: "\e102";
  595. }
  596. .glyphicon-leaf:before {
  597. content: "\e103";
  598. }
  599. .glyphicon-fire:before {
  600. content: "\e104";
  601. }
  602. .glyphicon-eye-open:before {
  603. content: "\e105";
  604. }
  605. .glyphicon-eye-close:before {
  606. content: "\e106";
  607. }
  608. .glyphicon-warning-sign:before {
  609. content: "\e107";
  610. }
  611. .glyphicon-plane:before {
  612. content: "\e108";
  613. }
  614. .glyphicon-calendar:before {
  615. content: "\e109";
  616. }
  617. .glyphicon-random:before {
  618. content: "\e110";
  619. }
  620. .glyphicon-comment:before {
  621. content: "\e111";
  622. }
  623. .glyphicon-magnet:before {
  624. content: "\e112";
  625. }
  626. .glyphicon-chevron-up:before {
  627. content: "\e113";
  628. }
  629. .glyphicon-chevron-down:before {
  630. content: "\e114";
  631. }
  632. .glyphicon-retweet:before {
  633. content: "\e115";
  634. }
  635. .glyphicon-shopping-cart:before {
  636. content: "\e116";
  637. }
  638. .glyphicon-folder-close:before {
  639. content: "\e117";
  640. }
  641. .glyphicon-folder-open:before {
  642. content: "\e118";
  643. }
  644. .glyphicon-resize-vertical:before {
  645. content: "\e119";
  646. }
  647. .glyphicon-resize-horizontal:before {
  648. content: "\e120";
  649. }
  650. .glyphicon-hdd:before {
  651. content: "\e121";
  652. }
  653. .glyphicon-bullhorn:before {
  654. content: "\e122";
  655. }
  656. .glyphicon-bell:before {
  657. content: "\e123";
  658. }
  659. .glyphicon-certificate:before {
  660. content: "\e124";
  661. }
  662. .glyphicon-thumbs-up:before {
  663. content: "\e125";
  664. }
  665. .glyphicon-thumbs-down:before {
  666. content: "\e126";
  667. }
  668. .glyphicon-hand-right:before {
  669. content: "\e127";
  670. }
  671. .glyphicon-hand-left:before {
  672. content: "\e128";
  673. }
  674. .glyphicon-hand-up:before {
  675. content: "\e129";
  676. }
  677. .glyphicon-hand-down:before {
  678. content: "\e130";
  679. }
  680. .glyphicon-circle-arrow-right:before {
  681. content: "\e131";
  682. }
  683. .glyphicon-circle-arrow-left:before {
  684. content: "\e132";
  685. }
  686. .glyphicon-circle-arrow-up:before {
  687. content: "\e133";
  688. }
  689. .glyphicon-circle-arrow-down:before {
  690. content: "\e134";
  691. }
  692. .glyphicon-globe:before {
  693. content: "\e135";
  694. }
  695. .glyphicon-wrench:before {
  696. content: "\e136";
  697. }
  698. .glyphicon-tasks:before {
  699. content: "\e137";
  700. }
  701. .glyphicon-filter:before {
  702. content: "\e138";
  703. }
  704. .glyphicon-briefcase:before {
  705. content: "\e139";
  706. }
  707. .glyphicon-fullscreen:before {
  708. content: "\e140";
  709. }
  710. .glyphicon-dashboard:before {
  711. content: "\e141";
  712. }
  713. .glyphicon-paperclip:before {
  714. content: "\e142";
  715. }
  716. .glyphicon-heart-empty:before {
  717. content: "\e143";
  718. }
  719. .glyphicon-link:before {
  720. content: "\e144";
  721. }
  722. .glyphicon-phone:before {
  723. content: "\e145";
  724. }
  725. .glyphicon-pushpin:before {
  726. content: "\e146";
  727. }
  728. .glyphicon-usd:before {
  729. content: "\e148";
  730. }
  731. .glyphicon-gbp:before {
  732. content: "\e149";
  733. }
  734. .glyphicon-sort:before {
  735. content: "\e150";
  736. }
  737. .glyphicon-sort-by-alphabet:before {
  738. content: "\e151";
  739. }
  740. .glyphicon-sort-by-alphabet-alt:before {
  741. content: "\e152";
  742. }
  743. .glyphicon-sort-by-order:before {
  744. content: "\e153";
  745. }
  746. .glyphicon-sort-by-order-alt:before {
  747. content: "\e154";
  748. }
  749. .glyphicon-sort-by-attributes:before {
  750. content: "\e155";
  751. }
  752. .glyphicon-sort-by-attributes-alt:before {
  753. content: "\e156";
  754. }
  755. .glyphicon-unchecked:before {
  756. content: "\e157";
  757. }
  758. .glyphicon-expand:before {
  759. content: "\e158";
  760. }
  761. .glyphicon-collapse-down:before {
  762. content: "\e159";
  763. }
  764. .glyphicon-collapse-up:before {
  765. content: "\e160";
  766. }
  767. .glyphicon-log-in:before {
  768. content: "\e161";
  769. }
  770. .glyphicon-flash:before {
  771. content: "\e162";
  772. }
  773. .glyphicon-log-out:before {
  774. content: "\e163";
  775. }
  776. .glyphicon-new-window:before {
  777. content: "\e164";
  778. }
  779. .glyphicon-record:before {
  780. content: "\e165";
  781. }
  782. .glyphicon-save:before {
  783. content: "\e166";
  784. }
  785. .glyphicon-open:before {
  786. content: "\e167";
  787. }
  788. .glyphicon-saved:before {
  789. content: "\e168";
  790. }
  791. .glyphicon-import:before {
  792. content: "\e169";
  793. }
  794. .glyphicon-export:before {
  795. content: "\e170";
  796. }
  797. .glyphicon-send:before {
  798. content: "\e171";
  799. }
  800. .glyphicon-floppy-disk:before {
  801. content: "\e172";
  802. }
  803. .glyphicon-floppy-saved:before {
  804. content: "\e173";
  805. }
  806. .glyphicon-floppy-remove:before {
  807. content: "\e174";
  808. }
  809. .glyphicon-floppy-save:before {
  810. content: "\e175";
  811. }
  812. .glyphicon-floppy-open:before {
  813. content: "\e176";
  814. }
  815. .glyphicon-credit-card:before {
  816. content: "\e177";
  817. }
  818. .glyphicon-transfer:before {
  819. content: "\e178";
  820. }
  821. .glyphicon-cutlery:before {
  822. content: "\e179";
  823. }
  824. .glyphicon-header:before {
  825. content: "\e180";
  826. }
  827. .glyphicon-compressed:before {
  828. content: "\e181";
  829. }
  830. .glyphicon-earphone:before {
  831. content: "\e182";
  832. }
  833. .glyphicon-phone-alt:before {
  834. content: "\e183";
  835. }
  836. .glyphicon-tower:before {
  837. content: "\e184";
  838. }
  839. .glyphicon-stats:before {
  840. content: "\e185";
  841. }
  842. .glyphicon-sd-video:before {
  843. content: "\e186";
  844. }
  845. .glyphicon-hd-video:before {
  846. content: "\e187";
  847. }
  848. .glyphicon-subtitles:before {
  849. content: "\e188";
  850. }
  851. .glyphicon-sound-stereo:before {
  852. content: "\e189";
  853. }
  854. .glyphicon-sound-dolby:before {
  855. content: "\e190";
  856. }
  857. .glyphicon-sound-5-1:before {
  858. content: "\e191";
  859. }
  860. .glyphicon-sound-6-1:before {
  861. content: "\e192";
  862. }
  863. .glyphicon-sound-7-1:before {
  864. content: "\e193";
  865. }
  866. .glyphicon-copyright-mark:before {
  867. content: "\e194";
  868. }
  869. .glyphicon-registration-mark:before {
  870. content: "\e195";
  871. }
  872. .glyphicon-cloud-download:before {
  873. content: "\e197";
  874. }
  875. .glyphicon-cloud-upload:before {
  876. content: "\e198";
  877. }
  878. .glyphicon-tree-conifer:before {
  879. content: "\e199";
  880. }
  881. .glyphicon-tree-deciduous:before {
  882. content: "\e200";
  883. }
  884. .glyphicon-cd:before {
  885. content: "\e201";
  886. }
  887. .glyphicon-save-file:before {
  888. content: "\e202";
  889. }
  890. .glyphicon-open-file:before {
  891. content: "\e203";
  892. }
  893. .glyphicon-level-up:before {
  894. content: "\e204";
  895. }
  896. .glyphicon-copy:before {
  897. content: "\e205";
  898. }
  899. .glyphicon-paste:before {
  900. content: "\e206";
  901. }
  902. .glyphicon-alert:before {
  903. content: "\e209";
  904. }
  905. .glyphicon-equalizer:before {
  906. content: "\e210";
  907. }
  908. .glyphicon-king:before {
  909. content: "\e211";
  910. }
  911. .glyphicon-queen:before {
  912. content: "\e212";
  913. }
  914. .glyphicon-pawn:before {
  915. content: "\e213";
  916. }
  917. .glyphicon-bishop:before {
  918. content: "\e214";
  919. }
  920. .glyphicon-knight:before {
  921. content: "\e215";
  922. }
  923. .glyphicon-baby-formula:before {
  924. content: "\e216";
  925. }
  926. .glyphicon-tent:before {
  927. content: "\26fa";
  928. }
  929. .glyphicon-blackboard:before {
  930. content: "\e218";
  931. }
  932. .glyphicon-bed:before {
  933. content: "\e219";
  934. }
  935. .glyphicon-apple:before {
  936. content: "\f8ff";
  937. }
  938. .glyphicon-erase:before {
  939. content: "\e221";
  940. }
  941. .glyphicon-hourglass:before {
  942. content: "\231b";
  943. }
  944. .glyphicon-lamp:before {
  945. content: "\e223";
  946. }
  947. .glyphicon-duplicate:before {
  948. content: "\e224";
  949. }
  950. .glyphicon-piggy-bank:before {
  951. content: "\e225";
  952. }
  953. .glyphicon-scissors:before {
  954. content: "\e226";
  955. }
  956. .glyphicon-bitcoin:before {
  957. content: "\e227";
  958. }
  959. .glyphicon-btc:before {
  960. content: "\e227";
  961. }
  962. .glyphicon-xbt:before {
  963. content: "\e227";
  964. }
  965. .glyphicon-yen:before {
  966. content: "\00a5";
  967. }
  968. .glyphicon-jpy:before {
  969. content: "\00a5";
  970. }
  971. .glyphicon-ruble:before {
  972. content: "\20bd";
  973. }
  974. .glyphicon-rub:before {
  975. content: "\20bd";
  976. }
  977. .glyphicon-scale:before {
  978. content: "\e230";
  979. }
  980. .glyphicon-ice-lolly:before {
  981. content: "\e231";
  982. }
  983. .glyphicon-ice-lolly-tasted:before {
  984. content: "\e232";
  985. }
  986. .glyphicon-education:before {
  987. content: "\e233";
  988. }
  989. .glyphicon-option-horizontal:before {
  990. content: "\e234";
  991. }
  992. .glyphicon-option-vertical:before {
  993. content: "\e235";
  994. }
  995. .glyphicon-menu-hamburger:before {
  996. content: "\e236";
  997. }
  998. .glyphicon-modal-window:before {
  999. content: "\e237";
  1000. }
  1001. .glyphicon-oil:before {
  1002. content: "\e238";
  1003. }
  1004. .glyphicon-grain:before {
  1005. content: "\e239";
  1006. }
  1007. .glyphicon-sunglasses:before {
  1008. content: "\e240";
  1009. }
  1010. .glyphicon-text-size:before {
  1011. content: "\e241";
  1012. }
  1013. .glyphicon-text-color:before {
  1014. content: "\e242";
  1015. }
  1016. .glyphicon-text-background:before {
  1017. content: "\e243";
  1018. }
  1019. .glyphicon-object-align-top:before {
  1020. content: "\e244";
  1021. }
  1022. .glyphicon-object-align-bottom:before {
  1023. content: "\e245";
  1024. }
  1025. .glyphicon-object-align-horizontal:before {
  1026. content: "\e246";
  1027. }
  1028. .glyphicon-object-align-left:before {
  1029. content: "\e247";
  1030. }
  1031. .glyphicon-object-align-vertical:before {
  1032. content: "\e248";
  1033. }
  1034. .glyphicon-object-align-right:before {
  1035. content: "\e249";
  1036. }
  1037. .glyphicon-triangle-right:before {
  1038. content: "\e250";
  1039. }
  1040. .glyphicon-triangle-left:before {
  1041. content: "\e251";
  1042. }
  1043. .glyphicon-triangle-bottom:before {
  1044. content: "\e252";
  1045. }
  1046. .glyphicon-triangle-top:before {
  1047. content: "\e253";
  1048. }
  1049. .glyphicon-console:before {
  1050. content: "\e254";
  1051. }
  1052. .glyphicon-superscript:before {
  1053. content: "\e255";
  1054. }
  1055. .glyphicon-subscript:before {
  1056. content: "\e256";
  1057. }
  1058. .glyphicon-menu-left:before {
  1059. content: "\e257";
  1060. }
  1061. .glyphicon-menu-right:before {
  1062. content: "\e258";
  1063. }
  1064. .glyphicon-menu-down:before {
  1065. content: "\e259";
  1066. }
  1067. .glyphicon-menu-up:before {
  1068. content: "\e260";
  1069. }
  1070. * {
  1071. -webkit-box-sizing: border-box;
  1072. -moz-box-sizing: border-box;
  1073. box-sizing: border-box;
  1074. }
  1075. *:before,
  1076. *:after {
  1077. -webkit-box-sizing: border-box;
  1078. -moz-box-sizing: border-box;
  1079. box-sizing: border-box;
  1080. }
  1081. html {
  1082. font-size: 10px;
  1083. -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  1084. }
  1085. body {
  1086. font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  1087. font-size: 13px;
  1088. line-height: 1.42857143;
  1089. color: #000;
  1090. background-color: #fff;
  1091. }
  1092. input,
  1093. button,
  1094. select,
  1095. textarea {
  1096. font-family: inherit;
  1097. font-size: inherit;
  1098. line-height: inherit;
  1099. }
  1100. a {
  1101. color: #337ab7;
  1102. text-decoration: none;
  1103. }
  1104. a:hover,
  1105. a:focus {
  1106. color: #23527c;
  1107. text-decoration: underline;
  1108. }
  1109. a:focus {
  1110. outline: thin dotted;
  1111. outline: 5px auto -webkit-focus-ring-color;
  1112. outline-offset: -2px;
  1113. }
  1114. figure {
  1115. margin: 0;
  1116. }
  1117. img {
  1118. vertical-align: middle;
  1119. }
  1120. .img-responsive,
  1121. .thumbnail > img,
  1122. .thumbnail a > img,
  1123. .carousel-inner > .item > img,
  1124. .carousel-inner > .item > a > img {
  1125. display: block;
  1126. max-width: 100%;
  1127. height: auto;
  1128. }
  1129. .img-rounded {
  1130. border-radius: 3px;
  1131. }
  1132. .img-thumbnail {
  1133. padding: 4px;
  1134. line-height: 1.42857143;
  1135. background-color: #fff;
  1136. border: 1px solid #ddd;
  1137. border-radius: 2px;
  1138. -webkit-transition: all 0.2s ease-in-out;
  1139. -o-transition: all 0.2s ease-in-out;
  1140. transition: all 0.2s ease-in-out;
  1141. display: inline-block;
  1142. max-width: 100%;
  1143. height: auto;
  1144. }
  1145. .img-circle {
  1146. border-radius: 50%;
  1147. }
  1148. hr {
  1149. margin-top: 18px;
  1150. margin-bottom: 18px;
  1151. border: 0;
  1152. border-top: 1px solid #eeeeee;
  1153. }
  1154. .sr-only {
  1155. position: absolute;
  1156. width: 1px;
  1157. height: 1px;
  1158. margin: -1px;
  1159. padding: 0;
  1160. overflow: hidden;
  1161. clip: rect(0, 0, 0, 0);
  1162. border: 0;
  1163. }
  1164. .sr-only-focusable:active,
  1165. .sr-only-focusable:focus {
  1166. position: static;
  1167. width: auto;
  1168. height: auto;
  1169. margin: 0;
  1170. overflow: visible;
  1171. clip: auto;
  1172. }
  1173. [role="button"] {
  1174. cursor: pointer;
  1175. }
  1176. h1,
  1177. h2,
  1178. h3,
  1179. h4,
  1180. h5,
  1181. h6,
  1182. .h1,
  1183. .h2,
  1184. .h3,
  1185. .h4,
  1186. .h5,
  1187. .h6 {
  1188. font-family: inherit;
  1189. font-weight: 500;
  1190. line-height: 1.1;
  1191. color: inherit;
  1192. }
  1193. h1 small,
  1194. h2 small,
  1195. h3 small,
  1196. h4 small,
  1197. h5 small,
  1198. h6 small,
  1199. .h1 small,
  1200. .h2 small,
  1201. .h3 small,
  1202. .h4 small,
  1203. .h5 small,
  1204. .h6 small,
  1205. h1 .small,
  1206. h2 .small,
  1207. h3 .small,
  1208. h4 .small,
  1209. h5 .small,
  1210. h6 .small,
  1211. .h1 .small,
  1212. .h2 .small,
  1213. .h3 .small,
  1214. .h4 .small,
  1215. .h5 .small,
  1216. .h6 .small {
  1217. font-weight: normal;
  1218. line-height: 1;
  1219. color: #777777;
  1220. }
  1221. h1,
  1222. .h1,
  1223. h2,
  1224. .h2,
  1225. h3,
  1226. .h3 {
  1227. margin-top: 18px;
  1228. margin-bottom: 9px;
  1229. }
  1230. h1 small,
  1231. .h1 small,
  1232. h2 small,
  1233. .h2 small,
  1234. h3 small,
  1235. .h3 small,
  1236. h1 .small,
  1237. .h1 .small,
  1238. h2 .small,
  1239. .h2 .small,
  1240. h3 .small,
  1241. .h3 .small {
  1242. font-size: 65%;
  1243. }
  1244. h4,
  1245. .h4,
  1246. h5,
  1247. .h5,
  1248. h6,
  1249. .h6 {
  1250. margin-top: 9px;
  1251. margin-bottom: 9px;
  1252. }
  1253. h4 small,
  1254. .h4 small,
  1255. h5 small,
  1256. .h5 small,
  1257. h6 small,
  1258. .h6 small,
  1259. h4 .small,
  1260. .h4 .small,
  1261. h5 .small,
  1262. .h5 .small,
  1263. h6 .small,
  1264. .h6 .small {
  1265. font-size: 75%;
  1266. }
  1267. h1,
  1268. .h1 {
  1269. font-size: 33px;
  1270. }
  1271. h2,
  1272. .h2 {
  1273. font-size: 27px;
  1274. }
  1275. h3,
  1276. .h3 {
  1277. font-size: 23px;
  1278. }
  1279. h4,
  1280. .h4 {
  1281. font-size: 17px;
  1282. }
  1283. h5,
  1284. .h5 {
  1285. font-size: 13px;
  1286. }
  1287. h6,
  1288. .h6 {
  1289. font-size: 12px;
  1290. }
  1291. p {
  1292. margin: 0 0 9px;
  1293. }
  1294. .lead {
  1295. margin-bottom: 18px;
  1296. font-size: 14px;
  1297. font-weight: 300;
  1298. line-height: 1.4;
  1299. }
  1300. @media (min-width: 768px) {
  1301. .lead {
  1302. font-size: 19.5px;
  1303. }
  1304. }
  1305. small,
  1306. .small {
  1307. font-size: 92%;
  1308. }
  1309. mark,
  1310. .mark {
  1311. background-color: #fcf8e3;
  1312. padding: .2em;
  1313. }
  1314. .text-left {
  1315. text-align: left;
  1316. }
  1317. .text-right {
  1318. text-align: right;
  1319. }
  1320. .text-center {
  1321. text-align: center;
  1322. }
  1323. .text-justify {
  1324. text-align: justify;
  1325. }
  1326. .text-nowrap {
  1327. white-space: nowrap;
  1328. }
  1329. .text-lowercase {
  1330. text-transform: lowercase;
  1331. }
  1332. .text-uppercase {
  1333. text-transform: uppercase;
  1334. }
  1335. .text-capitalize {
  1336. text-transform: capitalize;
  1337. }
  1338. .text-muted {
  1339. color: #777777;
  1340. }
  1341. .text-primary {
  1342. color: #337ab7;
  1343. }
  1344. a.text-primary:hover,
  1345. a.text-primary:focus {
  1346. color: #286090;
  1347. }
  1348. .text-success {
  1349. color: #3c763d;
  1350. }
  1351. a.text-success:hover,
  1352. a.text-success:focus {
  1353. color: #2b542c;
  1354. }
  1355. .text-info {
  1356. color: #31708f;
  1357. }
  1358. a.text-info:hover,
  1359. a.text-info:focus {
  1360. color: #245269;
  1361. }
  1362. .text-warning {
  1363. color: #8a6d3b;
  1364. }
  1365. a.text-warning:hover,
  1366. a.text-warning:focus {
  1367. color: #66512c;
  1368. }
  1369. .text-danger {
  1370. color: #a94442;
  1371. }
  1372. a.text-danger:hover,
  1373. a.text-danger:focus {
  1374. color: #843534;
  1375. }
  1376. .bg-primary {
  1377. color: #fff;
  1378. background-color: #337ab7;
  1379. }
  1380. a.bg-primary:hover,
  1381. a.bg-primary:focus {
  1382. background-color: #286090;
  1383. }
  1384. .bg-success {
  1385. background-color: #dff0d8;
  1386. }
  1387. a.bg-success:hover,
  1388. a.bg-success:focus {
  1389. background-color: #c1e2b3;
  1390. }
  1391. .bg-info {
  1392. background-color: #d9edf7;
  1393. }
  1394. a.bg-info:hover,
  1395. a.bg-info:focus {
  1396. background-color: #afd9ee;
  1397. }
  1398. .bg-warning {
  1399. background-color: #fcf8e3;
  1400. }
  1401. a.bg-warning:hover,
  1402. a.bg-warning:focus {
  1403. background-color: #f7ecb5;
  1404. }
  1405. .bg-danger {
  1406. background-color: #f2dede;
  1407. }
  1408. a.bg-danger:hover,
  1409. a.bg-danger:focus {
  1410. background-color: #e4b9b9;
  1411. }
  1412. .page-header {
  1413. padding-bottom: 8px;
  1414. margin: 36px 0 18px;
  1415. border-bottom: 1px solid #eeeeee;
  1416. }
  1417. ul,
  1418. ol {
  1419. margin-top: 0;
  1420. margin-bottom: 9px;
  1421. }
  1422. ul ul,
  1423. ol ul,
  1424. ul ol,
  1425. ol ol {
  1426. margin-bottom: 0;
  1427. }
  1428. .list-unstyled {
  1429. padding-left: 0;
  1430. list-style: none;
  1431. }
  1432. .list-inline {
  1433. padding-left: 0;
  1434. list-style: none;
  1435. margin-left: -5px;
  1436. }
  1437. .list-inline > li {
  1438. display: inline-block;
  1439. padding-left: 5px;
  1440. padding-right: 5px;
  1441. }
  1442. dl {
  1443. margin-top: 0;
  1444. margin-bottom: 18px;
  1445. }
  1446. dt,
  1447. dd {
  1448. line-height: 1.42857143;
  1449. }
  1450. dt {
  1451. font-weight: bold;
  1452. }
  1453. dd {
  1454. margin-left: 0;
  1455. }
  1456. @media (min-width: 541px) {
  1457. .dl-horizontal dt {
  1458. float: left;
  1459. width: 160px;
  1460. clear: left;
  1461. text-align: right;
  1462. overflow: hidden;
  1463. text-overflow: ellipsis;
  1464. white-space: nowrap;
  1465. }
  1466. .dl-horizontal dd {
  1467. margin-left: 180px;
  1468. }
  1469. }
  1470. abbr[title],
  1471. abbr[data-original-title] {
  1472. cursor: help;
  1473. border-bottom: 1px dotted #777777;
  1474. }
  1475. .initialism {
  1476. font-size: 90%;
  1477. text-transform: uppercase;
  1478. }
  1479. blockquote {
  1480. padding: 9px 18px;
  1481. margin: 0 0 18px;
  1482. font-size: inherit;
  1483. border-left: 5px solid #eeeeee;
  1484. }
  1485. blockquote p:last-child,
  1486. blockquote ul:last-child,
  1487. blockquote ol:last-child {
  1488. margin-bottom: 0;
  1489. }
  1490. blockquote footer,
  1491. blockquote small,
  1492. blockquote .small {
  1493. display: block;
  1494. font-size: 80%;
  1495. line-height: 1.42857143;
  1496. color: #777777;
  1497. }
  1498. blockquote footer:before,
  1499. blockquote small:before,
  1500. blockquote .small:before {
  1501. content: '\2014 \00A0';
  1502. }
  1503. .blockquote-reverse,
  1504. blockquote.pull-right {
  1505. padding-right: 15px;
  1506. padding-left: 0;
  1507. border-right: 5px solid #eeeeee;
  1508. border-left: 0;
  1509. text-align: right;
  1510. }
  1511. .blockquote-reverse footer:before,
  1512. blockquote.pull-right footer:before,
  1513. .blockquote-reverse small:before,
  1514. blockquote.pull-right small:before,
  1515. .blockquote-reverse .small:before,
  1516. blockquote.pull-right .small:before {
  1517. content: '';
  1518. }
  1519. .blockquote-reverse footer:after,
  1520. blockquote.pull-right footer:after,
  1521. .blockquote-reverse small:after,
  1522. blockquote.pull-right small:after,
  1523. .blockquote-reverse .small:after,
  1524. blockquote.pull-right .small:after {
  1525. content: '\00A0 \2014';
  1526. }
  1527. address {
  1528. margin-bottom: 18px;
  1529. font-style: normal;
  1530. line-height: 1.42857143;
  1531. }
  1532. code,
  1533. kbd,
  1534. pre,
  1535. samp {
  1536. font-family: monospace;
  1537. }
  1538. code {
  1539. padding: 2px 4px;
  1540. font-size: 90%;
  1541. color: #c7254e;
  1542. background-color: #f9f2f4;
  1543. border-radius: 2px;
  1544. }
  1545. kbd {
  1546. padding: 2px 4px;
  1547. font-size: 90%;
  1548. color: #888;
  1549. background-color: transparent;
  1550. border-radius: 1px;
  1551. box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
  1552. }
  1553. kbd kbd {
  1554. padding: 0;
  1555. font-size: 100%;
  1556. font-weight: bold;
  1557. box-shadow: none;
  1558. }
  1559. pre {
  1560. display: block;
  1561. padding: 8.5px;
  1562. margin: 0 0 9px;
  1563. font-size: 12px;
  1564. line-height: 1.42857143;
  1565. word-break: break-all;
  1566. word-wrap: break-word;
  1567. color: #333333;
  1568. background-color: #f5f5f5;
  1569. border: 1px solid #ccc;
  1570. border-radius: 2px;
  1571. }
  1572. pre code {
  1573. padding: 0;
  1574. font-size: inherit;
  1575. color: inherit;
  1576. white-space: pre-wrap;
  1577. background-color: transparent;
  1578. border-radius: 0;
  1579. }
  1580. .pre-scrollable {
  1581. max-height: 340px;
  1582. overflow-y: scroll;
  1583. }
  1584. .container {
  1585. margin-right: auto;
  1586. margin-left: auto;
  1587. padding-left: 0px;
  1588. padding-right: 0px;
  1589. }
  1590. @media (min-width: 768px) {
  1591. .container {
  1592. width: 768px;
  1593. }
  1594. }
  1595. @media (min-width: 992px) {
  1596. .container {
  1597. width: 940px;
  1598. }
  1599. }
  1600. @media (min-width: 1200px) {
  1601. .container {
  1602. width: 1140px;
  1603. }
  1604. }
  1605. .container-fluid {
  1606. margin-right: auto;
  1607. margin-left: auto;
  1608. padding-left: 0px;
  1609. padding-right: 0px;
  1610. }
  1611. .row {
  1612. margin-left: 0px;
  1613. margin-right: 0px;
  1614. }
  1615. .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  1616. position: relative;
  1617. min-height: 1px;
  1618. padding-left: 0px;
  1619. padding-right: 0px;
  1620. }
  1621. .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  1622. float: left;
  1623. }
  1624. .col-xs-12 {
  1625. width: 100%;
  1626. }
  1627. .col-xs-11 {
  1628. width: 91.66666667%;
  1629. }
  1630. .col-xs-10 {
  1631. width: 83.33333333%;
  1632. }
  1633. .col-xs-9 {
  1634. width: 75%;
  1635. }
  1636. .col-xs-8 {
  1637. width: 66.66666667%;
  1638. }
  1639. .col-xs-7 {
  1640. width: 58.33333333%;
  1641. }
  1642. .col-xs-6 {
  1643. width: 50%;
  1644. }
  1645. .col-xs-5 {
  1646. width: 41.66666667%;
  1647. }
  1648. .col-xs-4 {
  1649. width: 33.33333333%;
  1650. }
  1651. .col-xs-3 {
  1652. width: 25%;
  1653. }
  1654. .col-xs-2 {
  1655. width: 16.66666667%;
  1656. }
  1657. .col-xs-1 {
  1658. width: 8.33333333%;
  1659. }
  1660. .col-xs-pull-12 {
  1661. right: 100%;
  1662. }
  1663. .col-xs-pull-11 {
  1664. right: 91.66666667%;
  1665. }
  1666. .col-xs-pull-10 {
  1667. right: 83.33333333%;
  1668. }
  1669. .col-xs-pull-9 {
  1670. right: 75%;
  1671. }
  1672. .col-xs-pull-8 {
  1673. right: 66.66666667%;
  1674. }
  1675. .col-xs-pull-7 {
  1676. right: 58.33333333%;
  1677. }
  1678. .col-xs-pull-6 {
  1679. right: 50%;
  1680. }
  1681. .col-xs-pull-5 {
  1682. right: 41.66666667%;
  1683. }
  1684. .col-xs-pull-4 {
  1685. right: 33.33333333%;
  1686. }
  1687. .col-xs-pull-3 {
  1688. right: 25%;
  1689. }
  1690. .col-xs-pull-2 {
  1691. right: 16.66666667%;
  1692. }
  1693. .col-xs-pull-1 {
  1694. right: 8.33333333%;
  1695. }
  1696. .col-xs-pull-0 {
  1697. right: auto;
  1698. }
  1699. .col-xs-push-12 {
  1700. left: 100%;
  1701. }
  1702. .col-xs-push-11 {
  1703. left: 91.66666667%;
  1704. }
  1705. .col-xs-push-10 {
  1706. left: 83.33333333%;
  1707. }
  1708. .col-xs-push-9 {
  1709. left: 75%;
  1710. }
  1711. .col-xs-push-8 {
  1712. left: 66.66666667%;
  1713. }
  1714. .col-xs-push-7 {
  1715. left: 58.33333333%;
  1716. }
  1717. .col-xs-push-6 {
  1718. left: 50%;
  1719. }
  1720. .col-xs-push-5 {
  1721. left: 41.66666667%;
  1722. }
  1723. .col-xs-push-4 {
  1724. left: 33.33333333%;
  1725. }
  1726. .col-xs-push-3 {
  1727. left: 25%;
  1728. }
  1729. .col-xs-push-2 {
  1730. left: 16.66666667%;
  1731. }
  1732. .col-xs-push-1 {
  1733. left: 8.33333333%;
  1734. }
  1735. .col-xs-push-0 {
  1736. left: auto;
  1737. }
  1738. .col-xs-offset-12 {
  1739. margin-left: 100%;
  1740. }
  1741. .col-xs-offset-11 {
  1742. margin-left: 91.66666667%;
  1743. }
  1744. .col-xs-offset-10 {
  1745. margin-left: 83.33333333%;
  1746. }
  1747. .col-xs-offset-9 {
  1748. margin-left: 75%;
  1749. }
  1750. .col-xs-offset-8 {
  1751. margin-left: 66.66666667%;
  1752. }
  1753. .col-xs-offset-7 {
  1754. margin-left: 58.33333333%;
  1755. }
  1756. .col-xs-offset-6 {
  1757. margin-left: 50%;
  1758. }
  1759. .col-xs-offset-5 {
  1760. margin-left: 41.66666667%;
  1761. }
  1762. .col-xs-offset-4 {
  1763. margin-left: 33.33333333%;
  1764. }
  1765. .col-xs-offset-3 {
  1766. margin-left: 25%;
  1767. }
  1768. .col-xs-offset-2 {
  1769. margin-left: 16.66666667%;
  1770. }
  1771. .col-xs-offset-1 {
  1772. margin-left: 8.33333333%;
  1773. }
  1774. .col-xs-offset-0 {
  1775. margin-left: 0%;
  1776. }
  1777. @media (min-width: 768px) {
  1778. .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
  1779. float: left;
  1780. }
  1781. .col-sm-12 {
  1782. width: 100%;
  1783. }
  1784. .col-sm-11 {
  1785. width: 91.66666667%;
  1786. }
  1787. .col-sm-10 {
  1788. width: 83.33333333%;
  1789. }
  1790. .col-sm-9 {
  1791. width: 75%;
  1792. }
  1793. .col-sm-8 {
  1794. width: 66.66666667%;
  1795. }
  1796. .col-sm-7 {
  1797. width: 58.33333333%;
  1798. }
  1799. .col-sm-6 {
  1800. width: 50%;
  1801. }
  1802. .col-sm-5 {
  1803. width: 41.66666667%;
  1804. }
  1805. .col-sm-4 {
  1806. width: 33.33333333%;
  1807. }
  1808. .col-sm-3 {
  1809. width: 25%;
  1810. }
  1811. .col-sm-2 {
  1812. width: 16.66666667%;
  1813. }
  1814. .col-sm-1 {
  1815. width: 8.33333333%;
  1816. }
  1817. .col-sm-pull-12 {
  1818. right: 100%;
  1819. }
  1820. .col-sm-pull-11 {
  1821. right: 91.66666667%;
  1822. }
  1823. .col-sm-pull-10 {
  1824. right: 83.33333333%;
  1825. }
  1826. .col-sm-pull-9 {
  1827. right: 75%;
  1828. }
  1829. .col-sm-pull-8 {
  1830. right: 66.66666667%;
  1831. }
  1832. .col-sm-pull-7 {
  1833. right: 58.33333333%;
  1834. }
  1835. .col-sm-pull-6 {
  1836. right: 50%;
  1837. }
  1838. .col-sm-pull-5 {
  1839. right: 41.66666667%;
  1840. }
  1841. .col-sm-pull-4 {
  1842. right: 33.33333333%;
  1843. }
  1844. .col-sm-pull-3 {
  1845. right: 25%;
  1846. }
  1847. .col-sm-pull-2 {
  1848. right: 16.66666667%;
  1849. }
  1850. .col-sm-pull-1 {
  1851. right: 8.33333333%;
  1852. }
  1853. .col-sm-pull-0 {
  1854. right: auto;
  1855. }
  1856. .col-sm-push-12 {
  1857. left: 100%;
  1858. }
  1859. .col-sm-push-11 {
  1860. left: 91.66666667%;
  1861. }
  1862. .col-sm-push-10 {
  1863. left: 83.33333333%;
  1864. }
  1865. .col-sm-push-9 {
  1866. left: 75%;
  1867. }
  1868. .col-sm-push-8 {
  1869. left: 66.66666667%;
  1870. }
  1871. .col-sm-push-7 {
  1872. left: 58.33333333%;
  1873. }
  1874. .col-sm-push-6 {
  1875. left: 50%;
  1876. }
  1877. .col-sm-push-5 {
  1878. left: 41.66666667%;
  1879. }
  1880. .col-sm-push-4 {
  1881. left: 33.33333333%;
  1882. }
  1883. .col-sm-push-3 {
  1884. left: 25%;
  1885. }
  1886. .col-sm-push-2 {
  1887. left: 16.66666667%;
  1888. }
  1889. .col-sm-push-1 {
  1890. left: 8.33333333%;
  1891. }
  1892. .col-sm-push-0 {
  1893. left: auto;
  1894. }
  1895. .col-sm-offset-12 {
  1896. margin-left: 100%;
  1897. }
  1898. .col-sm-offset-11 {
  1899. margin-left: 91.66666667%;
  1900. }
  1901. .col-sm-offset-10 {
  1902. margin-left: 83.33333333%;
  1903. }
  1904. .col-sm-offset-9 {
  1905. margin-left: 75%;
  1906. }
  1907. .col-sm-offset-8 {
  1908. margin-left: 66.66666667%;
  1909. }
  1910. .col-sm-offset-7 {
  1911. margin-left: 58.33333333%;
  1912. }
  1913. .col-sm-offset-6 {
  1914. margin-left: 50%;
  1915. }
  1916. .col-sm-offset-5 {
  1917. margin-left: 41.66666667%;
  1918. }
  1919. .col-sm-offset-4 {
  1920. margin-left: 33.33333333%;
  1921. }
  1922. .col-sm-offset-3 {
  1923. margin-left: 25%;
  1924. }
  1925. .col-sm-offset-2 {
  1926. margin-left: 16.66666667%;
  1927. }
  1928. .col-sm-offset-1 {
  1929. margin-left: 8.33333333%;
  1930. }
  1931. .col-sm-offset-0 {
  1932. margin-left: 0%;
  1933. }
  1934. }
  1935. @media (min-width: 992px) {
  1936. .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
  1937. float: left;
  1938. }
  1939. .col-md-12 {
  1940. width: 100%;
  1941. }
  1942. .col-md-11 {
  1943. width: 91.66666667%;
  1944. }
  1945. .col-md-10 {
  1946. width: 83.33333333%;
  1947. }
  1948. .col-md-9 {
  1949. width: 75%;
  1950. }
  1951. .col-md-8 {
  1952. width: 66.66666667%;
  1953. }
  1954. .col-md-7 {
  1955. width: 58.33333333%;
  1956. }
  1957. .col-md-6 {
  1958. width: 50%;
  1959. }
  1960. .col-md-5 {
  1961. width: 41.66666667%;
  1962. }
  1963. .col-md-4 {
  1964. width: 33.33333333%;
  1965. }
  1966. .col-md-3 {
  1967. width: 25%;
  1968. }
  1969. .col-md-2 {
  1970. width: 16.66666667%;
  1971. }
  1972. .col-md-1 {
  1973. width: 8.33333333%;
  1974. }
  1975. .col-md-pull-12 {
  1976. right: 100%;
  1977. }
  1978. .col-md-pull-11 {
  1979. right: 91.66666667%;
  1980. }
  1981. .col-md-pull-10 {
  1982. right: 83.33333333%;
  1983. }
  1984. .col-md-pull-9 {
  1985. right: 75%;
  1986. }
  1987. .col-md-pull-8 {
  1988. right: 66.66666667%;
  1989. }
  1990. .col-md-pull-7 {
  1991. right: 58.33333333%;
  1992. }
  1993. .col-md-pull-6 {
  1994. right: 50%;
  1995. }
  1996. .col-md-pull-5 {
  1997. right: 41.66666667%;
  1998. }
  1999. .col-md-pull-4 {
  2000. right: 33.33333333%;
  2001. }
  2002. .col-md-pull-3 {
  2003. right: 25%;
  2004. }
  2005. .col-md-pull-2 {
  2006. right: 16.66666667%;
  2007. }
  2008. .col-md-pull-1 {
  2009. right: 8.33333333%;
  2010. }
  2011. .col-md-pull-0 {
  2012. right: auto;
  2013. }
  2014. .col-md-push-12 {
  2015. left: 100%;
  2016. }
  2017. .col-md-push-11 {
  2018. left: 91.66666667%;
  2019. }
  2020. .col-md-push-10 {
  2021. left: 83.33333333%;
  2022. }
  2023. .col-md-push-9 {
  2024. left: 75%;
  2025. }
  2026. .col-md-push-8 {
  2027. left: 66.66666667%;
  2028. }
  2029. .col-md-push-7 {
  2030. left: 58.33333333%;
  2031. }
  2032. .col-md-push-6 {
  2033. left: 50%;
  2034. }
  2035. .col-md-push-5 {
  2036. left: 41.66666667%;
  2037. }
  2038. .col-md-push-4 {
  2039. left: 33.33333333%;
  2040. }
  2041. .col-md-push-3 {
  2042. left: 25%;
  2043. }
  2044. .col-md-push-2 {
  2045. left: 16.66666667%;
  2046. }
  2047. .col-md-push-1 {
  2048. left: 8.33333333%;
  2049. }
  2050. .col-md-push-0 {
  2051. left: auto;
  2052. }
  2053. .col-md-offset-12 {
  2054. margin-left: 100%;
  2055. }
  2056. .col-md-offset-11 {
  2057. margin-left: 91.66666667%;
  2058. }
  2059. .col-md-offset-10 {
  2060. margin-left: 83.33333333%;
  2061. }
  2062. .col-md-offset-9 {
  2063. margin-left: 75%;
  2064. }
  2065. .col-md-offset-8 {
  2066. margin-left: 66.66666667%;
  2067. }
  2068. .col-md-offset-7 {
  2069. margin-left: 58.33333333%;
  2070. }
  2071. .col-md-offset-6 {
  2072. margin-left: 50%;
  2073. }
  2074. .col-md-offset-5 {
  2075. margin-left: 41.66666667%;
  2076. }
  2077. .col-md-offset-4 {
  2078. margin-left: 33.33333333%;
  2079. }
  2080. .col-md-offset-3 {
  2081. margin-left: 25%;
  2082. }
  2083. .col-md-offset-2 {
  2084. margin-left: 16.66666667%;
  2085. }
  2086. .col-md-offset-1 {
  2087. margin-left: 8.33333333%;
  2088. }
  2089. .col-md-offset-0 {
  2090. margin-left: 0%;
  2091. }
  2092. }
  2093. @media (min-width: 1200px) {
  2094. .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
  2095. float: left;
  2096. }
  2097. .col-lg-12 {
  2098. width: 100%;
  2099. }
  2100. .col-lg-11 {
  2101. width: 91.66666667%;
  2102. }
  2103. .col-lg-10 {
  2104. width: 83.33333333%;
  2105. }
  2106. .col-lg-9 {
  2107. width: 75%;
  2108. }
  2109. .col-lg-8 {
  2110. width: 66.66666667%;
  2111. }
  2112. .col-lg-7 {
  2113. width: 58.33333333%;
  2114. }
  2115. .col-lg-6 {
  2116. width: 50%;
  2117. }
  2118. .col-lg-5 {
  2119. width: 41.66666667%;
  2120. }
  2121. .col-lg-4 {
  2122. width: 33.33333333%;
  2123. }
  2124. .col-lg-3 {
  2125. width: 25%;
  2126. }
  2127. .col-lg-2 {
  2128. width: 16.66666667%;
  2129. }
  2130. .col-lg-1 {
  2131. width: 8.33333333%;
  2132. }
  2133. .col-lg-pull-12 {
  2134. right: 100%;
  2135. }
  2136. .col-lg-pull-11 {
  2137. right: 91.66666667%;
  2138. }
  2139. .col-lg-pull-10 {
  2140. right: 83.33333333%;
  2141. }
  2142. .col-lg-pull-9 {
  2143. right: 75%;
  2144. }
  2145. .col-lg-pull-8 {
  2146. right: 66.66666667%;
  2147. }
  2148. .col-lg-pull-7 {
  2149. right: 58.33333333%;
  2150. }
  2151. .col-lg-pull-6 {
  2152. right: 50%;
  2153. }
  2154. .col-lg-pull-5 {
  2155. right: 41.66666667%;
  2156. }
  2157. .col-lg-pull-4 {
  2158. right: 33.33333333%;
  2159. }
  2160. .col-lg-pull-3 {
  2161. right: 25%;
  2162. }
  2163. .col-lg-pull-2 {
  2164. right: 16.66666667%;
  2165. }
  2166. .col-lg-pull-1 {
  2167. right: 8.33333333%;
  2168. }
  2169. .col-lg-pull-0 {
  2170. right: auto;
  2171. }
  2172. .col-lg-push-12 {
  2173. left: 100%;
  2174. }
  2175. .col-lg-push-11 {
  2176. left: 91.66666667%;
  2177. }
  2178. .col-lg-push-10 {
  2179. left: 83.33333333%;
  2180. }
  2181. .col-lg-push-9 {
  2182. left: 75%;
  2183. }
  2184. .col-lg-push-8 {
  2185. left: 66.66666667%;
  2186. }
  2187. .col-lg-push-7 {
  2188. left: 58.33333333%;
  2189. }
  2190. .col-lg-push-6 {
  2191. left: 50%;
  2192. }
  2193. .col-lg-push-5 {
  2194. left: 41.66666667%;
  2195. }
  2196. .col-lg-push-4 {
  2197. left: 33.33333333%;
  2198. }
  2199. .col-lg-push-3 {
  2200. left: 25%;
  2201. }
  2202. .col-lg-push-2 {
  2203. left: 16.66666667%;
  2204. }
  2205. .col-lg-push-1 {
  2206. left: 8.33333333%;
  2207. }
  2208. .col-lg-push-0 {
  2209. left: auto;
  2210. }
  2211. .col-lg-offset-12 {
  2212. margin-left: 100%;
  2213. }
  2214. .col-lg-offset-11 {
  2215. margin-left: 91.66666667%;
  2216. }
  2217. .col-lg-offset-10 {
  2218. margin-left: 83.33333333%;
  2219. }
  2220. .col-lg-offset-9 {
  2221. margin-left: 75%;
  2222. }
  2223. .col-lg-offset-8 {
  2224. margin-left: 66.66666667%;
  2225. }
  2226. .col-lg-offset-7 {
  2227. margin-left: 58.33333333%;
  2228. }
  2229. .col-lg-offset-6 {
  2230. margin-left: 50%;
  2231. }
  2232. .col-lg-offset-5 {
  2233. margin-left: 41.66666667%;
  2234. }
  2235. .col-lg-offset-4 {
  2236. margin-left: 33.33333333%;
  2237. }
  2238. .col-lg-offset-3 {
  2239. margin-left: 25%;
  2240. }
  2241. .col-lg-offset-2 {
  2242. margin-left: 16.66666667%;
  2243. }
  2244. .col-lg-offset-1 {
  2245. margin-left: 8.33333333%;
  2246. }
  2247. .col-lg-offset-0 {
  2248. margin-left: 0%;
  2249. }
  2250. }
  2251. table {
  2252. background-color: transparent;
  2253. }
  2254. caption {
  2255. padding-top: 8px;
  2256. padding-bottom: 8px;
  2257. color: #777777;
  2258. text-align: left;
  2259. }
  2260. th {
  2261. text-align: left;
  2262. }
  2263. .table {
  2264. width: 100%;
  2265. max-width: 100%;
  2266. margin-bottom: 18px;
  2267. }
  2268. .table > thead > tr > th,
  2269. .table > tbody > tr > th,
  2270. .table > tfoot > tr > th,
  2271. .table > thead > tr > td,
  2272. .table > tbody > tr > td,
  2273. .table > tfoot > tr > td {
  2274. padding: 8px;
  2275. line-height: 1.42857143;
  2276. vertical-align: top;
  2277. border-top: 1px solid #ddd;
  2278. }
  2279. .table > thead > tr > th {
  2280. vertical-align: bottom;
  2281. border-bottom: 2px solid #ddd;
  2282. }
  2283. .table > caption + thead > tr:first-child > th,
  2284. .table > colgroup + thead > tr:first-child > th,
  2285. .table > thead:first-child > tr:first-child > th,
  2286. .table > caption + thead > tr:first-child > td,
  2287. .table > colgroup + thead > tr:first-child > td,
  2288. .table > thead:first-child > tr:first-child > td {
  2289. border-top: 0;
  2290. }
  2291. .table > tbody + tbody {
  2292. border-top: 2px solid #ddd;
  2293. }
  2294. .table .table {
  2295. background-color: #fff;
  2296. }
  2297. .table-condensed > thead > tr > th,
  2298. .table-condensed > tbody > tr > th,
  2299. .table-condensed > tfoot > tr > th,
  2300. .table-condensed > thead > tr > td,
  2301. .table-condensed > tbody > tr > td,
  2302. .table-condensed > tfoot > tr > td {
  2303. padding: 5px;
  2304. }
  2305. .table-bordered {
  2306. border: 1px solid #ddd;
  2307. }
  2308. .table-bordered > thead > tr > th,
  2309. .table-bordered > tbody > tr > th,
  2310. .table-bordered > tfoot > tr > th,
  2311. .table-bordered > thead > tr > td,
  2312. .table-bordered > tbody > tr > td,
  2313. .table-bordered > tfoot > tr > td {
  2314. border: 1px solid #ddd;
  2315. }
  2316. .table-bordered > thead > tr > th,
  2317. .table-bordered > thead > tr > td {
  2318. border-bottom-width: 2px;
  2319. }
  2320. .table-striped > tbody > tr:nth-of-type(odd) {
  2321. background-color: #f9f9f9;
  2322. }
  2323. .table-hover > tbody > tr:hover {
  2324. background-color: #f5f5f5;
  2325. }
  2326. table col[class*="col-"] {
  2327. position: static;
  2328. float: none;
  2329. display: table-column;
  2330. }
  2331. table td[class*="col-"],
  2332. table th[class*="col-"] {
  2333. position: static;
  2334. float: none;
  2335. display: table-cell;
  2336. }
  2337. .table > thead > tr > td.active,
  2338. .table > tbody > tr > td.active,
  2339. .table > tfoot > tr > td.active,
  2340. .table > thead > tr > th.active,
  2341. .table > tbody > tr > th.active,
  2342. .table > tfoot > tr > th.active,
  2343. .table > thead > tr.active > td,
  2344. .table > tbody > tr.active > td,
  2345. .table > tfoot > tr.active > td,
  2346. .table > thead > tr.active > th,
  2347. .table > tbody > tr.active > th,
  2348. .table > tfoot > tr.active > th {
  2349. background-color: #f5f5f5;
  2350. }
  2351. .table-hover > tbody > tr > td.active:hover,
  2352. .table-hover > tbody > tr > th.active:hover,
  2353. .table-hover > tbody > tr.active:hover > td,
  2354. .table-hover > tbody > tr:hover > .active,
  2355. .table-hover > tbody > tr.active:hover > th {
  2356. background-color: #e8e8e8;
  2357. }
  2358. .table > thead > tr > td.success,
  2359. .table > tbody > tr > td.success,
  2360. .table > tfoot > tr > td.success,
  2361. .table > thead > tr > th.success,
  2362. .table > tbody > tr > th.success,
  2363. .table > tfoot > tr > th.success,
  2364. .table > thead > tr.success > td,
  2365. .table > tbody > tr.success > td,
  2366. .table > tfoot > tr.success > td,
  2367. .table > thead > tr.success > th,
  2368. .table > tbody > tr.success > th,
  2369. .table > tfoot > tr.success > th {
  2370. background-color: #dff0d8;
  2371. }
  2372. .table-hover > tbody > tr > td.success:hover,
  2373. .table-hover > tbody > tr > th.success:hover,
  2374. .table-hover > tbody > tr.success:hover > td,
  2375. .table-hover > tbody > tr:hover > .success,
  2376. .table-hover > tbody > tr.success:hover > th {
  2377. background-color: #d0e9c6;
  2378. }
  2379. .table > thead > tr > td.info,
  2380. .table > tbody > tr > td.info,
  2381. .table > tfoot > tr > td.info,
  2382. .table > thead > tr > th.info,
  2383. .table > tbody > tr > th.info,
  2384. .table > tfoot > tr > th.info,
  2385. .table > thead > tr.info > td,
  2386. .table > tbody > tr.info > td,
  2387. .table > tfoot > tr.info > td,
  2388. .table > thead > tr.info > th,
  2389. .table > tbody > tr.info > th,
  2390. .table > tfoot > tr.info > th {
  2391. background-color: #d9edf7;
  2392. }
  2393. .table-hover > tbody > tr > td.info:hover,
  2394. .table-hover > tbody > tr > th.info:hover,
  2395. .table-hover > tbody > tr.info:hover > td,
  2396. .table-hover > tbody > tr:hover > .info,
  2397. .table-hover > tbody > tr.info:hover > th {
  2398. background-color: #c4e3f3;
  2399. }
  2400. .table > thead > tr > td.warning,
  2401. .table > tbody > tr > td.warning,
  2402. .table > tfoot > tr > td.warning,
  2403. .table > thead > tr > th.warning,
  2404. .table > tbody > tr > th.warning,
  2405. .table > tfoot > tr > th.warning,
  2406. .table > thead > tr.warning > td,
  2407. .table > tbody > tr.warning > td,
  2408. .table > tfoot > tr.warning > td,
  2409. .table > thead > tr.warning > th,
  2410. .table > tbody > tr.warning > th,
  2411. .table > tfoot > tr.warning > th {
  2412. background-color: #fcf8e3;
  2413. }
  2414. .table-hover > tbody > tr > td.warning:hover,
  2415. .table-hover > tbody > tr > th.warning:hover,
  2416. .table-hover > tbody > tr.warning:hover > td,
  2417. .table-hover > tbody > tr:hover > .warning,
  2418. .table-hover > tbody > tr.warning:hover > th {
  2419. background-color: #faf2cc;
  2420. }
  2421. .table > thead > tr > td.danger,
  2422. .table > tbody > tr > td.danger,
  2423. .table > tfoot > tr > td.danger,
  2424. .table > thead > tr > th.danger,
  2425. .table > tbody > tr > th.danger,
  2426. .table > tfoot > tr > th.danger,
  2427. .table > thead > tr.danger > td,
  2428. .table > tbody > tr.danger > td,
  2429. .table > tfoot > tr.danger > td,
  2430. .table > thead > tr.danger > th,
  2431. .table > tbody > tr.danger > th,
  2432. .table > tfoot > tr.danger > th {
  2433. background-color: #f2dede;
  2434. }
  2435. .table-hover > tbody > tr > td.danger:hover,
  2436. .table-hover > tbody > tr > th.danger:hover,
  2437. .table-hover > tbody > tr.danger:hover > td,
  2438. .table-hover > tbody > tr:hover > .danger,
  2439. .table-hover > tbody > tr.danger:hover > th {
  2440. background-color: #ebcccc;
  2441. }
  2442. .table-responsive {
  2443. overflow-x: auto;
  2444. min-height: 0.01%;
  2445. }
  2446. @media screen and (max-width: 767px) {
  2447. .table-responsive {
  2448. width: 100%;
  2449. margin-bottom: 13.5px;
  2450. overflow-y: hidden;
  2451. -ms-overflow-style: -ms-autohiding-scrollbar;
  2452. border: 1px solid #ddd;
  2453. }
  2454. .table-responsive > .table {
  2455. margin-bottom: 0;
  2456. }
  2457. .table-responsive > .table > thead > tr > th,
  2458. .table-responsive > .table > tbody > tr > th,
  2459. .table-responsive > .table > tfoot > tr > th,
  2460. .table-responsive > .table > thead > tr > td,
  2461. .table-responsive > .table > tbody > tr > td,
  2462. .table-responsive > .table > tfoot > tr > td {
  2463. white-space: nowrap;
  2464. }
  2465. .table-responsive > .table-bordered {
  2466. border: 0;
  2467. }
  2468. .table-responsive > .table-bordered > thead > tr > th:first-child,
  2469. .table-responsive > .table-bordered > tbody > tr > th:first-child,
  2470. .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  2471. .table-responsive > .table-bordered > thead > tr > td:first-child,
  2472. .table-responsive > .table-bordered > tbody > tr > td:first-child,
  2473. .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  2474. border-left: 0;
  2475. }
  2476. .table-responsive > .table-bordered > thead > tr > th:last-child,
  2477. .table-responsive > .table-bordered > tbody > tr > th:last-child,
  2478. .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  2479. .table-responsive > .table-bordered > thead > tr > td:last-child,
  2480. .table-responsive > .table-bordered > tbody > tr > td:last-child,
  2481. .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  2482. border-right: 0;
  2483. }
  2484. .table-responsive > .table-bordered > tbody > tr:last-child > th,
  2485. .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  2486. .table-responsive > .table-bordered > tbody > tr:last-child > td,
  2487. .table-responsive > .table-bordered > tfoot > tr:last-child > td {
  2488. border-bottom: 0;
  2489. }
  2490. }
  2491. fieldset {
  2492. padding: 0;
  2493. margin: 0;
  2494. border: 0;
  2495. min-width: 0;
  2496. }
  2497. legend {
  2498. display: block;
  2499. width: 100%;
  2500. padding: 0;
  2501. margin-bottom: 18px;
  2502. font-size: 19.5px;
  2503. line-height: inherit;
  2504. color: #333333;
  2505. border: 0;
  2506. border-bottom: 1px solid #e5e5e5;
  2507. }
  2508. label {
  2509. display: inline-block;
  2510. max-width: 100%;
  2511. margin-bottom: 5px;
  2512. font-weight: bold;
  2513. }
  2514. input[type="search"] {
  2515. -webkit-box-sizing: border-box;
  2516. -moz-box-sizing: border-box;
  2517. box-sizing: border-box;
  2518. }
  2519. input[type="radio"],
  2520. input[type="checkbox"] {
  2521. margin: 4px 0 0;
  2522. margin-top: 1px \9;
  2523. line-height: normal;
  2524. }
  2525. input[type="file"] {
  2526. display: block;
  2527. }
  2528. input[type="range"] {
  2529. display: block;
  2530. width: 100%;
  2531. }
  2532. select[multiple],
  2533. select[size] {
  2534. height: auto;
  2535. }
  2536. input[type="file"]:focus,
  2537. input[type="radio"]:focus,
  2538. input[type="checkbox"]:focus {
  2539. outline: thin dotted;
  2540. outline: 5px auto -webkit-focus-ring-color;
  2541. outline-offset: -2px;
  2542. }
  2543. output {
  2544. display: block;
  2545. padding-top: 7px;
  2546. font-size: 13px;
  2547. line-height: 1.42857143;
  2548. color: #555555;
  2549. }
  2550. .form-control {
  2551. display: block;
  2552. width: 100%;
  2553. height: 32px;
  2554. padding: 6px 12px;
  2555. font-size: 13px;
  2556. line-height: 1.42857143;
  2557. color: #555555;
  2558. background-color: #fff;
  2559. background-image: none;
  2560. border: 1px solid #ccc;
  2561. border-radius: 2px;
  2562. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2563. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2564. -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  2565. -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  2566. transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  2567. }
  2568. .form-control:focus {
  2569. border-color: #66afe9;
  2570. outline: 0;
  2571. -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  2572. box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  2573. }
  2574. .form-control::-moz-placeholder {
  2575. color: #999;
  2576. opacity: 1;
  2577. }
  2578. .form-control:-ms-input-placeholder {
  2579. color: #999;
  2580. }
  2581. .form-control::-webkit-input-placeholder {
  2582. color: #999;
  2583. }
  2584. .form-control::-ms-expand {
  2585. border: 0;
  2586. background-color: transparent;
  2587. }
  2588. .form-control[disabled],
  2589. .form-control[readonly],
  2590. fieldset[disabled] .form-control {
  2591. background-color: #eeeeee;
  2592. opacity: 1;
  2593. }
  2594. .form-control[disabled],
  2595. fieldset[disabled] .form-control {
  2596. cursor: not-allowed;
  2597. }
  2598. textarea.form-control {
  2599. height: auto;
  2600. }
  2601. input[type="search"] {
  2602. -webkit-appearance: none;
  2603. }
  2604. @media screen and (-webkit-min-device-pixel-ratio: 0) {
  2605. input[type="date"].form-control,
  2606. input[type="time"].form-control,
  2607. input[type="datetime-local"].form-control,
  2608. input[type="month"].form-control {
  2609. line-height: 32px;
  2610. }
  2611. input[type="date"].input-sm,
  2612. input[type="time"].input-sm,
  2613. input[type="datetime-local"].input-sm,
  2614. input[type="month"].input-sm,
  2615. .input-group-sm input[type="date"],
  2616. .input-group-sm input[type="time"],
  2617. .input-group-sm input[type="datetime-local"],
  2618. .input-group-sm input[type="month"] {
  2619. line-height: 30px;
  2620. }
  2621. input[type="date"].input-lg,
  2622. input[type="time"].input-lg,
  2623. input[type="datetime-local"].input-lg,
  2624. input[type="month"].input-lg,
  2625. .input-group-lg input[type="date"],
  2626. .input-group-lg input[type="time"],
  2627. .input-group-lg input[type="datetime-local"],
  2628. .input-group-lg input[type="month"] {
  2629. line-height: 45px;
  2630. }
  2631. }
  2632. .form-group {
  2633. margin-bottom: 15px;
  2634. }
  2635. .radio,
  2636. .checkbox {
  2637. position: relative;
  2638. display: block;
  2639. margin-top: 10px;
  2640. margin-bottom: 10px;
  2641. }
  2642. .radio label,
  2643. .checkbox label {
  2644. min-height: 18px;
  2645. padding-left: 20px;
  2646. margin-bottom: 0;
  2647. font-weight: normal;
  2648. cursor: pointer;
  2649. }
  2650. .radio input[type="radio"],
  2651. .radio-inline input[type="radio"],
  2652. .checkbox input[type="checkbox"],
  2653. .checkbox-inline input[type="checkbox"] {
  2654. position: absolute;
  2655. margin-left: -20px;
  2656. margin-top: 4px \9;
  2657. }
  2658. .radio + .radio,
  2659. .checkbox + .checkbox {
  2660. margin-top: -5px;
  2661. }
  2662. .radio-inline,
  2663. .checkbox-inline {
  2664. position: relative;
  2665. display: inline-block;
  2666. padding-left: 20px;
  2667. margin-bottom: 0;
  2668. vertical-align: middle;
  2669. font-weight: normal;
  2670. cursor: pointer;
  2671. }
  2672. .radio-inline + .radio-inline,
  2673. .checkbox-inline + .checkbox-inline {
  2674. margin-top: 0;
  2675. margin-left: 10px;
  2676. }
  2677. input[type="radio"][disabled],
  2678. input[type="checkbox"][disabled],
  2679. input[type="radio"].disabled,
  2680. input[type="checkbox"].disabled,
  2681. fieldset[disabled] input[type="radio"],
  2682. fieldset[disabled] input[type="checkbox"] {
  2683. cursor: not-allowed;
  2684. }
  2685. .radio-inline.disabled,
  2686. .checkbox-inline.disabled,
  2687. fieldset[disabled] .radio-inline,
  2688. fieldset[disabled] .checkbox-inline {
  2689. cursor: not-allowed;
  2690. }
  2691. .radio.disabled label,
  2692. .checkbox.disabled label,
  2693. fieldset[disabled] .radio label,
  2694. fieldset[disabled] .checkbox label {
  2695. cursor: not-allowed;
  2696. }
  2697. .form-control-static {
  2698. padding-top: 7px;
  2699. padding-bottom: 7px;
  2700. margin-bottom: 0;
  2701. min-height: 31px;
  2702. }
  2703. .form-control-static.input-lg,
  2704. .form-control-static.input-sm {
  2705. padding-left: 0;
  2706. padding-right: 0;
  2707. }
  2708. .input-sm {
  2709. height: 30px;
  2710. padding: 5px 10px;
  2711. font-size: 12px;
  2712. line-height: 1.5;
  2713. border-radius: 1px;
  2714. }
  2715. select.input-sm {
  2716. height: 30px;
  2717. line-height: 30px;
  2718. }
  2719. textarea.input-sm,
  2720. select[multiple].input-sm {
  2721. height: auto;
  2722. }
  2723. .form-group-sm .form-control {
  2724. height: 30px;
  2725. padding: 5px 10px;
  2726. font-size: 12px;
  2727. line-height: 1.5;
  2728. border-radius: 1px;
  2729. }
  2730. .form-group-sm select.form-control {
  2731. height: 30px;
  2732. line-height: 30px;
  2733. }
  2734. .form-group-sm textarea.form-control,
  2735. .form-group-sm select[multiple].form-control {
  2736. height: auto;
  2737. }
  2738. .form-group-sm .form-control-static {
  2739. height: 30px;
  2740. min-height: 30px;
  2741. padding: 6px 10px;
  2742. font-size: 12px;
  2743. line-height: 1.5;
  2744. }
  2745. .input-lg {
  2746. height: 45px;
  2747. padding: 10px 16px;
  2748. font-size: 17px;
  2749. line-height: 1.3333333;
  2750. border-radius: 3px;
  2751. }
  2752. select.input-lg {
  2753. height: 45px;
  2754. line-height: 45px;
  2755. }
  2756. textarea.input-lg,
  2757. select[multiple].input-lg {
  2758. height: auto;
  2759. }
  2760. .form-group-lg .form-control {
  2761. height: 45px;
  2762. padding: 10px 16px;
  2763. font-size: 17px;
  2764. line-height: 1.3333333;
  2765. border-radius: 3px;
  2766. }
  2767. .form-group-lg select.form-control {
  2768. height: 45px;
  2769. line-height: 45px;
  2770. }
  2771. .form-group-lg textarea.form-control,
  2772. .form-group-lg select[multiple].form-control {
  2773. height: auto;
  2774. }
  2775. .form-group-lg .form-control-static {
  2776. height: 45px;
  2777. min-height: 35px;
  2778. padding: 11px 16px;
  2779. font-size: 17px;
  2780. line-height: 1.3333333;
  2781. }
  2782. .has-feedback {
  2783. position: relative;
  2784. }
  2785. .has-feedback .form-control {
  2786. padding-right: 40px;
  2787. }
  2788. .form-control-feedback {
  2789. position: absolute;
  2790. top: 0;
  2791. right: 0;
  2792. z-index: 2;
  2793. display: block;
  2794. width: 32px;
  2795. height: 32px;
  2796. line-height: 32px;
  2797. text-align: center;
  2798. pointer-events: none;
  2799. }
  2800. .input-lg + .form-control-feedback,
  2801. .input-group-lg + .form-control-feedback,
  2802. .form-group-lg .form-control + .form-control-feedback {
  2803. width: 45px;
  2804. height: 45px;
  2805. line-height: 45px;
  2806. }
  2807. .input-sm + .form-control-feedback,
  2808. .input-group-sm + .form-control-feedback,
  2809. .form-group-sm .form-control + .form-control-feedback {
  2810. width: 30px;
  2811. height: 30px;
  2812. line-height: 30px;
  2813. }
  2814. .has-success .help-block,
  2815. .has-success .control-label,
  2816. .has-success .radio,
  2817. .has-success .checkbox,
  2818. .has-success .radio-inline,
  2819. .has-success .checkbox-inline,
  2820. .has-success.radio label,
  2821. .has-success.checkbox label,
  2822. .has-success.radio-inline label,
  2823. .has-success.checkbox-inline label {
  2824. color: #3c763d;
  2825. }
  2826. .has-success .form-control {
  2827. border-color: #3c763d;
  2828. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2829. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2830. }
  2831. .has-success .form-control:focus {
  2832. border-color: #2b542c;
  2833. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  2834. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  2835. }
  2836. .has-success .input-group-addon {
  2837. color: #3c763d;
  2838. border-color: #3c763d;
  2839. background-color: #dff0d8;
  2840. }
  2841. .has-success .form-control-feedback {
  2842. color: #3c763d;
  2843. }
  2844. .has-warning .help-block,
  2845. .has-warning .control-label,
  2846. .has-warning .radio,
  2847. .has-warning .checkbox,
  2848. .has-warning .radio-inline,
  2849. .has-warning .checkbox-inline,
  2850. .has-warning.radio label,
  2851. .has-warning.checkbox label,
  2852. .has-warning.radio-inline label,
  2853. .has-warning.checkbox-inline label {
  2854. color: #8a6d3b;
  2855. }
  2856. .has-warning .form-control {
  2857. border-color: #8a6d3b;
  2858. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2859. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2860. }
  2861. .has-warning .form-control:focus {
  2862. border-color: #66512c;
  2863. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  2864. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  2865. }
  2866. .has-warning .input-group-addon {
  2867. color: #8a6d3b;
  2868. border-color: #8a6d3b;
  2869. background-color: #fcf8e3;
  2870. }
  2871. .has-warning .form-control-feedback {
  2872. color: #8a6d3b;
  2873. }
  2874. .has-error .help-block,
  2875. .has-error .control-label,
  2876. .has-error .radio,
  2877. .has-error .checkbox,
  2878. .has-error .radio-inline,
  2879. .has-error .checkbox-inline,
  2880. .has-error.radio label,
  2881. .has-error.checkbox label,
  2882. .has-error.radio-inline label,
  2883. .has-error.checkbox-inline label {
  2884. color: #a94442;
  2885. }
  2886. .has-error .form-control {
  2887. border-color: #a94442;
  2888. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2889. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  2890. }
  2891. .has-error .form-control:focus {
  2892. border-color: #843534;
  2893. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  2894. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  2895. }
  2896. .has-error .input-group-addon {
  2897. color: #a94442;
  2898. border-color: #a94442;
  2899. background-color: #f2dede;
  2900. }
  2901. .has-error .form-control-feedback {
  2902. color: #a94442;
  2903. }
  2904. .has-feedback label ~ .form-control-feedback {
  2905. top: 23px;
  2906. }
  2907. .has-feedback label.sr-only ~ .form-control-feedback {
  2908. top: 0;
  2909. }
  2910. .help-block {
  2911. display: block;
  2912. margin-top: 5px;
  2913. margin-bottom: 10px;
  2914. color: #404040;
  2915. }
  2916. @media (min-width: 768px) {
  2917. .form-inline .form-group {
  2918. display: inline-block;
  2919. margin-bottom: 0;
  2920. vertical-align: middle;
  2921. }
  2922. .form-inline .form-control {
  2923. display: inline-block;
  2924. width: auto;
  2925. vertical-align: middle;
  2926. }
  2927. .form-inline .form-control-static {
  2928. display: inline-block;
  2929. }
  2930. .form-inline .input-group {
  2931. display: inline-table;
  2932. vertical-align: middle;
  2933. }
  2934. .form-inline .input-group .input-group-addon,
  2935. .form-inline .input-group .input-group-btn,
  2936. .form-inline .input-group .form-control {
  2937. width: auto;
  2938. }
  2939. .form-inline .input-group > .form-control {
  2940. width: 100%;
  2941. }
  2942. .form-inline .control-label {
  2943. margin-bottom: 0;
  2944. vertical-align: middle;
  2945. }
  2946. .form-inline .radio,
  2947. .form-inline .checkbox {
  2948. display: inline-block;
  2949. margin-top: 0;
  2950. margin-bottom: 0;
  2951. vertical-align: middle;
  2952. }
  2953. .form-inline .radio label,
  2954. .form-inline .checkbox label {
  2955. padding-left: 0;
  2956. }
  2957. .form-inline .radio input[type="radio"],
  2958. .form-inline .checkbox input[type="checkbox"] {
  2959. position: relative;
  2960. margin-left: 0;
  2961. }
  2962. .form-inline .has-feedback .form-control-feedback {
  2963. top: 0;
  2964. }
  2965. }
  2966. .form-horizontal .radio,
  2967. .form-horizontal .checkbox,
  2968. .form-horizontal .radio-inline,
  2969. .form-horizontal .checkbox-inline {
  2970. margin-top: 0;
  2971. margin-bottom: 0;
  2972. padding-top: 7px;
  2973. }
  2974. .form-horizontal .radio,
  2975. .form-horizontal .checkbox {
  2976. min-height: 25px;
  2977. }
  2978. .form-horizontal .form-group {
  2979. margin-left: 0px;
  2980. margin-right: 0px;
  2981. }
  2982. @media (min-width: 768px) {
  2983. .form-horizontal .control-label {
  2984. text-align: right;
  2985. margin-bottom: 0;
  2986. padding-top: 7px;
  2987. }
  2988. }
  2989. .form-horizontal .has-feedback .form-control-feedback {
  2990. right: 0px;
  2991. }
  2992. @media (min-width: 768px) {
  2993. .form-horizontal .form-group-lg .control-label {
  2994. padding-top: 11px;
  2995. font-size: 17px;
  2996. }
  2997. }
  2998. @media (min-width: 768px) {
  2999. .form-horizontal .form-group-sm .control-label {
  3000. padding-top: 6px;
  3001. font-size: 12px;
  3002. }
  3003. }
  3004. .btn {
  3005. display: inline-block;
  3006. margin-bottom: 0;
  3007. font-weight: normal;
  3008. text-align: center;
  3009. vertical-align: middle;
  3010. touch-action: manipulation;
  3011. cursor: pointer;
  3012. background-image: none;
  3013. border: 1px solid transparent;
  3014. white-space: nowrap;
  3015. padding: 6px 12px;
  3016. font-size: 13px;
  3017. line-height: 1.42857143;
  3018. border-radius: 2px;
  3019. -webkit-user-select: none;
  3020. -moz-user-select: none;
  3021. -ms-user-select: none;
  3022. user-select: none;
  3023. }
  3024. .btn:focus,
  3025. .btn:active:focus,
  3026. .btn.active:focus,
  3027. .btn.focus,
  3028. .btn:active.focus,
  3029. .btn.active.focus {
  3030. outline: thin dotted;
  3031. outline: 5px auto -webkit-focus-ring-color;
  3032. outline-offset: -2px;
  3033. }
  3034. .btn:hover,
  3035. .btn:focus,
  3036. .btn.focus {
  3037. color: #333;
  3038. text-decoration: none;
  3039. }
  3040. .btn:active,
  3041. .btn.active {
  3042. outline: 0;
  3043. background-image: none;
  3044. -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  3045. box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  3046. }
  3047. .btn.disabled,
  3048. .btn[disabled],
  3049. fieldset[disabled] .btn {
  3050. cursor: not-allowed;
  3051. opacity: 0.65;
  3052. filter: alpha(opacity=65);
  3053. -webkit-box-shadow: none;
  3054. box-shadow: none;
  3055. }
  3056. a.btn.disabled,
  3057. fieldset[disabled] a.btn {
  3058. pointer-events: none;
  3059. }
  3060. .btn-default {
  3061. color: #333;
  3062. background-color: #fff;
  3063. border-color: #ccc;
  3064. }
  3065. .btn-default:focus,
  3066. .btn-default.focus {
  3067. color: #333;
  3068. background-color: #e6e6e6;
  3069. border-color: #8c8c8c;
  3070. }
  3071. .btn-default:hover {
  3072. color: #333;
  3073. background-color: #e6e6e6;
  3074. border-color: #adadad;
  3075. }
  3076. .btn-default:active,
  3077. .btn-default.active,
  3078. .open > .dropdown-toggle.btn-default {
  3079. color: #333;
  3080. background-color: #e6e6e6;
  3081. border-color: #adadad;
  3082. }
  3083. .btn-default:active:hover,
  3084. .btn-default.active:hover,
  3085. .open > .dropdown-toggle.btn-default:hover,
  3086. .btn-default:active:focus,
  3087. .btn-default.active:focus,
  3088. .open > .dropdown-toggle.btn-default:focus,
  3089. .btn-default:active.focus,
  3090. .btn-default.active.focus,
  3091. .open > .dropdown-toggle.btn-default.focus {
  3092. color: #333;
  3093. background-color: #d4d4d4;
  3094. border-color: #8c8c8c;
  3095. }
  3096. .btn-default:active,
  3097. .btn-default.active,
  3098. .open > .dropdown-toggle.btn-default {
  3099. background-image: none;
  3100. }
  3101. .btn-default.disabled:hover,
  3102. .btn-default[disabled]:hover,
  3103. fieldset[disabled] .btn-default:hover,
  3104. .btn-default.disabled:focus,
  3105. .btn-default[disabled]:focus,
  3106. fieldset[disabled] .btn-default:focus,
  3107. .btn-default.disabled.focus,
  3108. .btn-default[disabled].focus,
  3109. fieldset[disabled] .btn-default.focus {
  3110. background-color: #fff;
  3111. border-color: #ccc;
  3112. }
  3113. .btn-default .badge {
  3114. color: #fff;
  3115. background-color: #333;
  3116. }
  3117. .btn-primary {
  3118. color: #fff;
  3119. background-color: #337ab7;
  3120. border-color: #2e6da4;
  3121. }
  3122. .btn-primary:focus,
  3123. .btn-primary.focus {
  3124. color: #fff;
  3125. background-color: #286090;
  3126. border-color: #122b40;
  3127. }
  3128. .btn-primary:hover {
  3129. color: #fff;
  3130. background-color: #286090;
  3131. border-color: #204d74;
  3132. }
  3133. .btn-primary:active,
  3134. .btn-primary.active,
  3135. .open > .dropdown-toggle.btn-primary {
  3136. color: #fff;
  3137. background-color: #286090;
  3138. border-color: #204d74;
  3139. }
  3140. .btn-primary:active:hover,
  3141. .btn-primary.active:hover,
  3142. .open > .dropdown-toggle.btn-primary:hover,
  3143. .btn-primary:active:focus,
  3144. .btn-primary.active:focus,
  3145. .open > .dropdown-toggle.btn-primary:focus,
  3146. .btn-primary:active.focus,
  3147. .btn-primary.active.focus,
  3148. .open > .dropdown-toggle.btn-primary.focus {
  3149. color: #fff;
  3150. background-color: #204d74;
  3151. border-color: #122b40;
  3152. }
  3153. .btn-primary:active,
  3154. .btn-primary.active,
  3155. .open > .dropdown-toggle.btn-primary {
  3156. background-image: none;
  3157. }
  3158. .btn-primary.disabled:hover,
  3159. .btn-primary[disabled]:hover,
  3160. fieldset[disabled] .btn-primary:hover,
  3161. .btn-primary.disabled:focus,
  3162. .btn-primary[disabled]:focus,
  3163. fieldset[disabled] .btn-primary:focus,
  3164. .btn-primary.disabled.focus,
  3165. .btn-primary[disabled].focus,
  3166. fieldset[disabled] .btn-primary.focus {
  3167. background-color: #337ab7;
  3168. border-color: #2e6da4;
  3169. }
  3170. .btn-primary .badge {
  3171. color: #337ab7;
  3172. background-color: #fff;
  3173. }
  3174. .btn-success {
  3175. color: #fff;
  3176. background-color: #5cb85c;
  3177. border-color: #4cae4c;
  3178. }
  3179. .btn-success:focus,
  3180. .btn-success.focus {
  3181. color: #fff;
  3182. background-color: #449d44;
  3183. border-color: #255625;
  3184. }
  3185. .btn-success:hover {
  3186. color: #fff;
  3187. background-color: #449d44;
  3188. border-color: #398439;
  3189. }
  3190. .btn-success:active,
  3191. .btn-success.active,
  3192. .open > .dropdown-toggle.btn-success {
  3193. color: #fff;
  3194. background-color: #449d44;
  3195. border-color: #398439;
  3196. }
  3197. .btn-success:active:hover,
  3198. .btn-success.active:hover,
  3199. .open > .dropdown-toggle.btn-success:hover,
  3200. .btn-success:active:focus,
  3201. .btn-success.active:focus,
  3202. .open > .dropdown-toggle.btn-success:focus,
  3203. .btn-success:active.focus,
  3204. .btn-success.active.focus,
  3205. .open > .dropdown-toggle.btn-success.focus {
  3206. color: #fff;
  3207. background-color: #398439;
  3208. border-color: #255625;
  3209. }
  3210. .btn-success:active,
  3211. .btn-success.active,
  3212. .open > .dropdown-toggle.btn-success {
  3213. background-image: none;
  3214. }
  3215. .btn-success.disabled:hover,
  3216. .btn-success[disabled]:hover,
  3217. fieldset[disabled] .btn-success:hover,
  3218. .btn-success.disabled:focus,
  3219. .btn-success[disabled]:focus,
  3220. fieldset[disabled] .btn-success:focus,
  3221. .btn-success.disabled.focus,
  3222. .btn-success[disabled].focus,
  3223. fieldset[disabled] .btn-success.focus {
  3224. background-color: #5cb85c;
  3225. border-color: #4cae4c;
  3226. }
  3227. .btn-success .badge {
  3228. color: #5cb85c;
  3229. background-color: #fff;
  3230. }
  3231. .btn-info {
  3232. color: #fff;
  3233. background-color: #5bc0de;
  3234. border-color: #46b8da;
  3235. }
  3236. .btn-info:focus,
  3237. .btn-info.focus {
  3238. color: #fff;
  3239. background-color: #31b0d5;
  3240. border-color: #1b6d85;
  3241. }
  3242. .btn-info:hover {
  3243. color: #fff;
  3244. background-color: #31b0d5;
  3245. border-color: #269abc;
  3246. }
  3247. .btn-info:active,
  3248. .btn-info.active,
  3249. .open > .dropdown-toggle.btn-info {
  3250. color: #fff;
  3251. background-color: #31b0d5;
  3252. border-color: #269abc;
  3253. }
  3254. .btn-info:active:hover,
  3255. .btn-info.active:hover,
  3256. .open > .dropdown-toggle.btn-info:hover,
  3257. .btn-info:active:focus,
  3258. .btn-info.active:focus,
  3259. .open > .dropdown-toggle.btn-info:focus,
  3260. .btn-info:active.focus,
  3261. .btn-info.active.focus,
  3262. .open > .dropdown-toggle.btn-info.focus {
  3263. color: #fff;
  3264. background-color: #269abc;
  3265. border-color: #1b6d85;
  3266. }
  3267. .btn-info:active,
  3268. .btn-info.active,
  3269. .open > .dropdown-toggle.btn-info {
  3270. background-image: none;
  3271. }
  3272. .btn-info.disabled:hover,
  3273. .btn-info[disabled]:hover,
  3274. fieldset[disabled] .btn-info:hover,
  3275. .btn-info.disabled:focus,
  3276. .btn-info[disabled]:focus,
  3277. fieldset[disabled] .btn-info:focus,
  3278. .btn-info.disabled.focus,
  3279. .btn-info[disabled].focus,
  3280. fieldset[disabled] .btn-info.focus {
  3281. background-color: #5bc0de;
  3282. border-color: #46b8da;
  3283. }
  3284. .btn-info .badge {
  3285. color: #5bc0de;
  3286. background-color: #fff;
  3287. }
  3288. .btn-warning {
  3289. color: #fff;
  3290. background-color: #f0ad4e;
  3291. border-color: #eea236;
  3292. }
  3293. .btn-warning:focus,
  3294. .btn-warning.focus {
  3295. color: #fff;
  3296. background-color: #ec971f;
  3297. border-color: #985f0d;
  3298. }
  3299. .btn-warning:hover {
  3300. color: #fff;
  3301. background-color: #ec971f;
  3302. border-color: #d58512;
  3303. }
  3304. .btn-warning:active,
  3305. .btn-warning.active,
  3306. .open > .dropdown-toggle.btn-warning {
  3307. color: #fff;
  3308. background-color: #ec971f;
  3309. border-color: #d58512;
  3310. }
  3311. .btn-warning:active:hover,
  3312. .btn-warning.active:hover,
  3313. .open > .dropdown-toggle.btn-warning:hover,
  3314. .btn-warning:active:focus,
  3315. .btn-warning.active:focus,
  3316. .open > .dropdown-toggle.btn-warning:focus,
  3317. .btn-warning:active.focus,
  3318. .btn-warning.active.focus,
  3319. .open > .dropdown-toggle.btn-warning.focus {
  3320. color: #fff;
  3321. background-color: #d58512;
  3322. border-color: #985f0d;
  3323. }
  3324. .btn-warning:active,
  3325. .btn-warning.active,
  3326. .open > .dropdown-toggle.btn-warning {
  3327. background-image: none;
  3328. }
  3329. .btn-warning.disabled:hover,
  3330. .btn-warning[disabled]:hover,
  3331. fieldset[disabled] .btn-warning:hover,
  3332. .btn-warning.disabled:focus,
  3333. .btn-warning[disabled]:focus,
  3334. fieldset[disabled] .btn-warning:focus,
  3335. .btn-warning.disabled.focus,
  3336. .btn-warning[disabled].focus,
  3337. fieldset[disabled] .btn-warning.focus {
  3338. background-color: #f0ad4e;
  3339. border-color: #eea236;
  3340. }
  3341. .btn-warning .badge {
  3342. color: #f0ad4e;
  3343. background-color: #fff;
  3344. }
  3345. .btn-danger {
  3346. color: #fff;
  3347. background-color: #d9534f;
  3348. border-color: #d43f3a;
  3349. }
  3350. .btn-danger:focus,
  3351. .btn-danger.focus {
  3352. color: #fff;
  3353. background-color: #c9302c;
  3354. border-color: #761c19;
  3355. }
  3356. .btn-danger:hover {
  3357. color: #fff;
  3358. background-color: #c9302c;
  3359. border-color: #ac2925;
  3360. }
  3361. .btn-danger:active,
  3362. .btn-danger.active,
  3363. .open > .dropdown-toggle.btn-danger {
  3364. color: #fff;
  3365. background-color: #c9302c;
  3366. border-color: #ac2925;
  3367. }
  3368. .btn-danger:active:hover,
  3369. .btn-danger.active:hover,
  3370. .open > .dropdown-toggle.btn-danger:hover,
  3371. .btn-danger:active:focus,
  3372. .btn-danger.active:focus,
  3373. .open > .dropdown-toggle.btn-danger:focus,
  3374. .btn-danger:active.focus,
  3375. .btn-danger.active.focus,
  3376. .open > .dropdown-toggle.btn-danger.focus {
  3377. color: #fff;
  3378. background-color: #ac2925;
  3379. border-color: #761c19;
  3380. }
  3381. .btn-danger:active,
  3382. .btn-danger.active,
  3383. .open > .dropdown-toggle.btn-danger {
  3384. background-image: none;
  3385. }
  3386. .btn-danger.disabled:hover,
  3387. .btn-danger[disabled]:hover,
  3388. fieldset[disabled] .btn-danger:hover,
  3389. .btn-danger.disabled:focus,
  3390. .btn-danger[disabled]:focus,
  3391. fieldset[disabled] .btn-danger:focus,
  3392. .btn-danger.disabled.focus,
  3393. .btn-danger[disabled].focus,
  3394. fieldset[disabled] .btn-danger.focus {
  3395. background-color: #d9534f;
  3396. border-color: #d43f3a;
  3397. }
  3398. .btn-danger .badge {
  3399. color: #d9534f;
  3400. background-color: #fff;
  3401. }
  3402. .btn-link {
  3403. color: #337ab7;
  3404. font-weight: normal;
  3405. border-radius: 0;
  3406. }
  3407. .btn-link,
  3408. .btn-link:active,
  3409. .btn-link.active,
  3410. .btn-link[disabled],
  3411. fieldset[disabled] .btn-link {
  3412. background-color: transparent;
  3413. -webkit-box-shadow: none;
  3414. box-shadow: none;
  3415. }
  3416. .btn-link,
  3417. .btn-link:hover,
  3418. .btn-link:focus,
  3419. .btn-link:active {
  3420. border-color: transparent;
  3421. }
  3422. .btn-link:hover,
  3423. .btn-link:focus {
  3424. color: #23527c;
  3425. text-decoration: underline;
  3426. background-color: transparent;
  3427. }
  3428. .btn-link[disabled]:hover,
  3429. fieldset[disabled] .btn-link:hover,
  3430. .btn-link[disabled]:focus,
  3431. fieldset[disabled] .btn-link:focus {
  3432. color: #777777;
  3433. text-decoration: none;
  3434. }
  3435. .btn-lg,
  3436. .btn-group-lg > .btn {
  3437. padding: 10px 16px;
  3438. font-size: 17px;
  3439. line-height: 1.3333333;
  3440. border-radius: 3px;
  3441. }
  3442. .btn-sm,
  3443. .btn-group-sm > .btn {
  3444. padding: 5px 10px;
  3445. font-size: 12px;
  3446. line-height: 1.5;
  3447. border-radius: 1px;
  3448. }
  3449. .btn-xs,
  3450. .btn-group-xs > .btn {
  3451. padding: 1px 5px;
  3452. font-size: 12px;
  3453. line-height: 1.5;
  3454. border-radius: 1px;
  3455. }
  3456. .btn-block {
  3457. display: block;
  3458. width: 100%;
  3459. }
  3460. .btn-block + .btn-block {
  3461. margin-top: 5px;
  3462. }
  3463. input[type="submit"].btn-block,
  3464. input[type="reset"].btn-block,
  3465. input[type="button"].btn-block {
  3466. width: 100%;
  3467. }
  3468. .fade {
  3469. opacity: 0;
  3470. -webkit-transition: opacity 0.15s linear;
  3471. -o-transition: opacity 0.15s linear;
  3472. transition: opacity 0.15s linear;
  3473. }
  3474. .fade.in {
  3475. opacity: 1;
  3476. }
  3477. .collapse {
  3478. display: none;
  3479. }
  3480. .collapse.in {
  3481. display: block;
  3482. }
  3483. tr.collapse.in {
  3484. display: table-row;
  3485. }
  3486. tbody.collapse.in {
  3487. display: table-row-group;
  3488. }
  3489. .collapsing {
  3490. position: relative;
  3491. height: 0;
  3492. overflow: hidden;
  3493. -webkit-transition-property: height, visibility;
  3494. transition-property: height, visibility;
  3495. -webkit-transition-duration: 0.35s;
  3496. transition-duration: 0.35s;
  3497. -webkit-transition-timing-function: ease;
  3498. transition-timing-function: ease;
  3499. }
  3500. .caret {
  3501. display: inline-block;
  3502. width: 0;
  3503. height: 0;
  3504. margin-left: 2px;
  3505. vertical-align: middle;
  3506. border-top: 4px dashed;
  3507. border-top: 4px solid \9;
  3508. border-right: 4px solid transparent;
  3509. border-left: 4px solid transparent;
  3510. }
  3511. .dropup,
  3512. .dropdown {
  3513. position: relative;
  3514. }
  3515. .dropdown-toggle:focus {
  3516. outline: 0;
  3517. }
  3518. .dropdown-menu {
  3519. position: absolute;
  3520. top: 100%;
  3521. left: 0;
  3522. z-index: 1000;
  3523. display: none;
  3524. float: left;
  3525. min-width: 160px;
  3526. padding: 5px 0;
  3527. margin: 2px 0 0;
  3528. list-style: none;
  3529. font-size: 13px;
  3530. text-align: left;
  3531. background-color: #fff;
  3532. border: 1px solid #ccc;
  3533. border: 1px solid rgba(0, 0, 0, 0.15);
  3534. border-radius: 2px;
  3535. -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  3536. box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  3537. background-clip: padding-box;
  3538. }
  3539. .dropdown-menu.pull-right {
  3540. right: 0;
  3541. left: auto;
  3542. }
  3543. .dropdown-menu .divider {
  3544. height: 1px;
  3545. margin: 8px 0;
  3546. overflow: hidden;
  3547. background-color: #e5e5e5;
  3548. }
  3549. .dropdown-menu > li > a {
  3550. display: block;
  3551. padding: 3px 20px;
  3552. clear: both;
  3553. font-weight: normal;
  3554. line-height: 1.42857143;
  3555. color: #333333;
  3556. white-space: nowrap;
  3557. }
  3558. .dropdown-menu > li > a:hover,
  3559. .dropdown-menu > li > a:focus {
  3560. text-decoration: none;
  3561. color: #262626;
  3562. background-color: #f5f5f5;
  3563. }
  3564. .dropdown-menu > .active > a,
  3565. .dropdown-menu > .active > a:hover,
  3566. .dropdown-menu > .active > a:focus {
  3567. color: #fff;
  3568. text-decoration: none;
  3569. outline: 0;
  3570. background-color: #337ab7;
  3571. }
  3572. .dropdown-menu > .disabled > a,
  3573. .dropdown-menu > .disabled > a:hover,
  3574. .dropdown-menu > .disabled > a:focus {
  3575. color: #777777;
  3576. }
  3577. .dropdown-menu > .disabled > a:hover,
  3578. .dropdown-menu > .disabled > a:focus {
  3579. text-decoration: none;
  3580. background-color: transparent;
  3581. background-image: none;
  3582. filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  3583. cursor: not-allowed;
  3584. }
  3585. .open > .dropdown-menu {
  3586. display: block;
  3587. }
  3588. .open > a {
  3589. outline: 0;
  3590. }
  3591. .dropdown-menu-right {
  3592. left: auto;
  3593. right: 0;
  3594. }
  3595. .dropdown-menu-left {
  3596. left: 0;
  3597. right: auto;
  3598. }
  3599. .dropdown-header {
  3600. display: block;
  3601. padding: 3px 20px;
  3602. font-size: 12px;
  3603. line-height: 1.42857143;
  3604. color: #777777;
  3605. white-space: nowrap;
  3606. }
  3607. .dropdown-backdrop {
  3608. position: fixed;
  3609. left: 0;
  3610. right: 0;
  3611. bottom: 0;
  3612. top: 0;
  3613. z-index: 990;
  3614. }
  3615. .pull-right > .dropdown-menu {
  3616. right: 0;
  3617. left: auto;
  3618. }
  3619. .dropup .caret,
  3620. .navbar-fixed-bottom .dropdown .caret {
  3621. border-top: 0;
  3622. border-bottom: 4px dashed;
  3623. border-bottom: 4px solid \9;
  3624. content: "";
  3625. }
  3626. .dropup .dropdown-menu,
  3627. .navbar-fixed-bottom .dropdown .dropdown-menu {
  3628. top: auto;
  3629. bottom: 100%;
  3630. margin-bottom: 2px;
  3631. }
  3632. @media (min-width: 541px) {
  3633. .navbar-right .dropdown-menu {
  3634. left: auto;
  3635. right: 0;
  3636. }
  3637. .navbar-right .dropdown-menu-left {
  3638. left: 0;
  3639. right: auto;
  3640. }
  3641. }
  3642. .btn-group,
  3643. .btn-group-vertical {
  3644. position: relative;
  3645. display: inline-block;
  3646. vertical-align: middle;
  3647. }
  3648. .btn-group > .btn,
  3649. .btn-group-vertical > .btn {
  3650. position: relative;
  3651. float: left;
  3652. }
  3653. .btn-group > .btn:hover,
  3654. .btn-group-vertical > .btn:hover,
  3655. .btn-group > .btn:focus,
  3656. .btn-group-vertical > .btn:focus,
  3657. .btn-group > .btn:active,
  3658. .btn-group-vertical > .btn:active,
  3659. .btn-group > .btn.active,
  3660. .btn-group-vertical > .btn.active {
  3661. z-index: 2;
  3662. }
  3663. .btn-group .btn + .btn,
  3664. .btn-group .btn + .btn-group,
  3665. .btn-group .btn-group + .btn,
  3666. .btn-group .btn-group + .btn-group {
  3667. margin-left: -1px;
  3668. }
  3669. .btn-toolbar {
  3670. margin-left: -5px;
  3671. }
  3672. .btn-toolbar .btn,
  3673. .btn-toolbar .btn-group,
  3674. .btn-toolbar .input-group {
  3675. float: left;
  3676. }
  3677. .btn-toolbar > .btn,
  3678. .btn-toolbar > .btn-group,
  3679. .btn-toolbar > .input-group {
  3680. margin-left: 5px;
  3681. }
  3682. .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  3683. border-radius: 0;
  3684. }
  3685. .btn-group > .btn:first-child {
  3686. margin-left: 0;
  3687. }
  3688. .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  3689. border-bottom-right-radius: 0;
  3690. border-top-right-radius: 0;
  3691. }
  3692. .btn-group > .btn:last-child:not(:first-child),
  3693. .btn-group > .dropdown-toggle:not(:first-child) {
  3694. border-bottom-left-radius: 0;
  3695. border-top-left-radius: 0;
  3696. }
  3697. .btn-group > .btn-group {
  3698. float: left;
  3699. }
  3700. .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  3701. border-radius: 0;
  3702. }
  3703. .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
  3704. .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  3705. border-bottom-right-radius: 0;
  3706. border-top-right-radius: 0;
  3707. }
  3708. .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  3709. border-bottom-left-radius: 0;
  3710. border-top-left-radius: 0;
  3711. }
  3712. .btn-group .dropdown-toggle:active,
  3713. .btn-group.open .dropdown-toggle {
  3714. outline: 0;
  3715. }
  3716. .btn-group > .btn + .dropdown-toggle {
  3717. padding-left: 8px;
  3718. padding-right: 8px;
  3719. }
  3720. .btn-group > .btn-lg + .dropdown-toggle {
  3721. padding-left: 12px;
  3722. padding-right: 12px;
  3723. }
  3724. .btn-group.open .dropdown-toggle {
  3725. -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  3726. box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  3727. }
  3728. .btn-group.open .dropdown-toggle.btn-link {
  3729. -webkit-box-shadow: none;
  3730. box-shadow: none;
  3731. }
  3732. .btn .caret {
  3733. margin-left: 0;
  3734. }
  3735. .btn-lg .caret {
  3736. border-width: 5px 5px 0;
  3737. border-bottom-width: 0;
  3738. }
  3739. .dropup .btn-lg .caret {
  3740. border-width: 0 5px 5px;
  3741. }
  3742. .btn-group-vertical > .btn,
  3743. .btn-group-vertical > .btn-group,
  3744. .btn-group-vertical > .btn-group > .btn {
  3745. display: block;
  3746. float: none;
  3747. width: 100%;
  3748. max-width: 100%;
  3749. }
  3750. .btn-group-vertical > .btn-group > .btn {
  3751. float: none;
  3752. }
  3753. .btn-group-vertical > .btn + .btn,
  3754. .btn-group-vertical > .btn + .btn-group,
  3755. .btn-group-vertical > .btn-group + .btn,
  3756. .btn-group-vertical > .btn-group + .btn-group {
  3757. margin-top: -1px;
  3758. margin-left: 0;
  3759. }
  3760. .btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  3761. border-radius: 0;
  3762. }
  3763. .btn-group-vertical > .btn:first-child:not(:last-child) {
  3764. border-top-right-radius: 2px;
  3765. border-top-left-radius: 2px;
  3766. border-bottom-right-radius: 0;
  3767. border-bottom-left-radius: 0;
  3768. }
  3769. .btn-group-vertical > .btn:last-child:not(:first-child) {
  3770. border-top-right-radius: 0;
  3771. border-top-left-radius: 0;
  3772. border-bottom-right-radius: 2px;
  3773. border-bottom-left-radius: 2px;
  3774. }
  3775. .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  3776. border-radius: 0;
  3777. }
  3778. .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
  3779. .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  3780. border-bottom-right-radius: 0;
  3781. border-bottom-left-radius: 0;
  3782. }
  3783. .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  3784. border-top-right-radius: 0;
  3785. border-top-left-radius: 0;
  3786. }
  3787. .btn-group-justified {
  3788. display: table;
  3789. width: 100%;
  3790. table-layout: fixed;
  3791. border-collapse: separate;
  3792. }
  3793. .btn-group-justified > .btn,
  3794. .btn-group-justified > .btn-group {
  3795. float: none;
  3796. display: table-cell;
  3797. width: 1%;
  3798. }
  3799. .btn-group-justified > .btn-group .btn {
  3800. width: 100%;
  3801. }
  3802. .btn-group-justified > .btn-group .dropdown-menu {
  3803. left: auto;
  3804. }
  3805. [data-toggle="buttons"] > .btn input[type="radio"],
  3806. [data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
  3807. [data-toggle="buttons"] > .btn input[type="checkbox"],
  3808. [data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  3809. position: absolute;
  3810. clip: rect(0, 0, 0, 0);
  3811. pointer-events: none;
  3812. }
  3813. .input-group {
  3814. position: relative;
  3815. display: table;
  3816. border-collapse: separate;
  3817. }
  3818. .input-group[class*="col-"] {
  3819. float: none;
  3820. padding-left: 0;
  3821. padding-right: 0;
  3822. }
  3823. .input-group .form-control {
  3824. position: relative;
  3825. z-index: 2;
  3826. float: left;
  3827. width: 100%;
  3828. margin-bottom: 0;
  3829. }
  3830. .input-group .form-control:focus {
  3831. z-index: 3;
  3832. }
  3833. .input-group-lg > .form-control,
  3834. .input-group-lg > .input-group-addon,
  3835. .input-group-lg > .input-group-btn > .btn {
  3836. height: 45px;
  3837. padding: 10px 16px;
  3838. font-size: 17px;
  3839. line-height: 1.3333333;
  3840. border-radius: 3px;
  3841. }
  3842. select.input-group-lg > .form-control,
  3843. select.input-group-lg > .input-group-addon,
  3844. select.input-group-lg > .input-group-btn > .btn {
  3845. height: 45px;
  3846. line-height: 45px;
  3847. }
  3848. textarea.input-group-lg > .form-control,
  3849. textarea.input-group-lg > .input-group-addon,
  3850. textarea.input-group-lg > .input-group-btn > .btn,
  3851. select[multiple].input-group-lg > .form-control,
  3852. select[multiple].input-group-lg > .input-group-addon,
  3853. select[multiple].input-group-lg > .input-group-btn > .btn {
  3854. height: auto;
  3855. }
  3856. .input-group-sm > .form-control,
  3857. .input-group-sm > .input-group-addon,
  3858. .input-group-sm > .input-group-btn > .btn {
  3859. height: 30px;
  3860. padding: 5px 10px;
  3861. font-size: 12px;
  3862. line-height: 1.5;
  3863. border-radius: 1px;
  3864. }
  3865. select.input-group-sm > .form-control,
  3866. select.input-group-sm > .input-group-addon,
  3867. select.input-group-sm > .input-group-btn > .btn {
  3868. height: 30px;
  3869. line-height: 30px;
  3870. }
  3871. textarea.input-group-sm > .form-control,
  3872. textarea.input-group-sm > .input-group-addon,
  3873. textarea.input-group-sm > .input-group-btn > .btn,
  3874. select[multiple].input-group-sm > .form-control,
  3875. select[multiple].input-group-sm > .input-group-addon,
  3876. select[multiple].input-group-sm > .input-group-btn > .btn {
  3877. height: auto;
  3878. }
  3879. .input-group-addon,
  3880. .input-group-btn,
  3881. .input-group .form-control {
  3882. display: table-cell;
  3883. }
  3884. .input-group-addon:not(:first-child):not(:last-child),
  3885. .input-group-btn:not(:first-child):not(:last-child),
  3886. .input-group .form-control:not(:first-child):not(:last-child) {
  3887. border-radius: 0;
  3888. }
  3889. .input-group-addon,
  3890. .input-group-btn {
  3891. width: 1%;
  3892. white-space: nowrap;
  3893. vertical-align: middle;
  3894. }
  3895. .input-group-addon {
  3896. padding: 6px 12px;
  3897. font-size: 13px;
  3898. font-weight: normal;
  3899. line-height: 1;
  3900. color: #555555;
  3901. text-align: center;
  3902. background-color: #eeeeee;
  3903. border: 1px solid #ccc;
  3904. border-radius: 2px;
  3905. }
  3906. .input-group-addon.input-sm {
  3907. padding: 5px 10px;
  3908. font-size: 12px;
  3909. border-radius: 1px;
  3910. }
  3911. .input-group-addon.input-lg {
  3912. padding: 10px 16px;
  3913. font-size: 17px;
  3914. border-radius: 3px;
  3915. }
  3916. .input-group-addon input[type="radio"],
  3917. .input-group-addon input[type="checkbox"] {
  3918. margin-top: 0;
  3919. }
  3920. .input-group .form-control:first-child,
  3921. .input-group-addon:first-child,
  3922. .input-group-btn:first-child > .btn,
  3923. .input-group-btn:first-child > .btn-group > .btn,
  3924. .input-group-btn:first-child > .dropdown-toggle,
  3925. .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
  3926. .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  3927. border-bottom-right-radius: 0;
  3928. border-top-right-radius: 0;
  3929. }
  3930. .input-group-addon:first-child {
  3931. border-right: 0;
  3932. }
  3933. .input-group .form-control:last-child,
  3934. .input-group-addon:last-child,
  3935. .input-group-btn:last-child > .btn,
  3936. .input-group-btn:last-child > .btn-group > .btn,
  3937. .input-group-btn:last-child > .dropdown-toggle,
  3938. .input-group-btn:first-child > .btn:not(:first-child),
  3939. .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  3940. border-bottom-left-radius: 0;
  3941. border-top-left-radius: 0;
  3942. }
  3943. .input-group-addon:last-child {
  3944. border-left: 0;
  3945. }
  3946. .input-group-btn {
  3947. position: relative;
  3948. font-size: 0;
  3949. white-space: nowrap;
  3950. }
  3951. .input-group-btn > .btn {
  3952. position: relative;
  3953. }
  3954. .input-group-btn > .btn + .btn {
  3955. margin-left: -1px;
  3956. }
  3957. .input-group-btn > .btn:hover,
  3958. .input-group-btn > .btn:focus,
  3959. .input-group-btn > .btn:active {
  3960. z-index: 2;
  3961. }
  3962. .input-group-btn:first-child > .btn,
  3963. .input-group-btn:first-child > .btn-group {
  3964. margin-right: -1px;
  3965. }
  3966. .input-group-btn:last-child > .btn,
  3967. .input-group-btn:last-child > .btn-group {
  3968. z-index: 2;
  3969. margin-left: -1px;
  3970. }
  3971. .nav {
  3972. margin-bottom: 0;
  3973. padding-left: 0;
  3974. list-style: none;
  3975. }
  3976. .nav > li {
  3977. position: relative;
  3978. display: block;
  3979. }
  3980. .nav > li > a {
  3981. position: relative;
  3982. display: block;
  3983. padding: 10px 15px;
  3984. }
  3985. .nav > li > a:hover,
  3986. .nav > li > a:focus {
  3987. text-decoration: none;
  3988. background-color: #eeeeee;
  3989. }
  3990. .nav > li.disabled > a {
  3991. color: #777777;
  3992. }
  3993. .nav > li.disabled > a:hover,
  3994. .nav > li.disabled > a:focus {
  3995. color: #777777;
  3996. text-decoration: none;
  3997. background-color: transparent;
  3998. cursor: not-allowed;
  3999. }
  4000. .nav .open > a,
  4001. .nav .open > a:hover,
  4002. .nav .open > a:focus {
  4003. background-color: #eeeeee;
  4004. border-color: #337ab7;
  4005. }
  4006. .nav .nav-divider {
  4007. height: 1px;
  4008. margin: 8px 0;
  4009. overflow: hidden;
  4010. background-color: #e5e5e5;
  4011. }
  4012. .nav > li > a > img {
  4013. max-width: none;
  4014. }
  4015. .nav-tabs {
  4016. border-bottom: 1px solid #ddd;
  4017. }
  4018. .nav-tabs > li {
  4019. float: left;
  4020. margin-bottom: -1px;
  4021. }
  4022. .nav-tabs > li > a {
  4023. margin-right: 2px;
  4024. line-height: 1.42857143;
  4025. border: 1px solid transparent;
  4026. border-radius: 2px 2px 0 0;
  4027. }
  4028. .nav-tabs > li > a:hover {
  4029. border-color: #eeeeee #eeeeee #ddd;
  4030. }
  4031. .nav-tabs > li.active > a,
  4032. .nav-tabs > li.active > a:hover,
  4033. .nav-tabs > li.active > a:focus {
  4034. color: #555555;
  4035. background-color: #fff;
  4036. border: 1px solid #ddd;
  4037. border-bottom-color: transparent;
  4038. cursor: default;
  4039. }
  4040. .nav-tabs.nav-justified {
  4041. width: 100%;
  4042. border-bottom: 0;
  4043. }
  4044. .nav-tabs.nav-justified > li {
  4045. float: none;
  4046. }
  4047. .nav-tabs.nav-justified > li > a {
  4048. text-align: center;
  4049. margin-bottom: 5px;
  4050. }
  4051. .nav-tabs.nav-justified > .dropdown .dropdown-menu {
  4052. top: auto;
  4053. left: auto;
  4054. }
  4055. @media (min-width: 768px) {
  4056. .nav-tabs.nav-justified > li {
  4057. display: table-cell;
  4058. width: 1%;
  4059. }
  4060. .nav-tabs.nav-justified > li > a {
  4061. margin-bottom: 0;
  4062. }
  4063. }
  4064. .nav-tabs.nav-justified > li > a {
  4065. margin-right: 0;
  4066. border-radius: 2px;
  4067. }
  4068. .nav-tabs.nav-justified > .active > a,
  4069. .nav-tabs.nav-justified > .active > a:hover,
  4070. .nav-tabs.nav-justified > .active > a:focus {
  4071. border: 1px solid #ddd;
  4072. }
  4073. @media (min-width: 768px) {
  4074. .nav-tabs.nav-justified > li > a {
  4075. border-bottom: 1px solid #ddd;
  4076. border-radius: 2px 2px 0 0;
  4077. }
  4078. .nav-tabs.nav-justified > .active > a,
  4079. .nav-tabs.nav-justified > .active > a:hover,
  4080. .nav-tabs.nav-justified > .active > a:focus {
  4081. border-bottom-color: #fff;
  4082. }
  4083. }
  4084. .nav-pills > li {
  4085. float: left;
  4086. }
  4087. .nav-pills > li > a {
  4088. border-radius: 2px;
  4089. }
  4090. .nav-pills > li + li {
  4091. margin-left: 2px;
  4092. }
  4093. .nav-pills > li.active > a,
  4094. .nav-pills > li.active > a:hover,
  4095. .nav-pills > li.active > a:focus {
  4096. color: #fff;
  4097. background-color: #337ab7;
  4098. }
  4099. .nav-stacked > li {
  4100. float: none;
  4101. }
  4102. .nav-stacked > li + li {
  4103. margin-top: 2px;
  4104. margin-left: 0;
  4105. }
  4106. .nav-justified {
  4107. width: 100%;
  4108. }
  4109. .nav-justified > li {
  4110. float: none;
  4111. }
  4112. .nav-justified > li > a {
  4113. text-align: center;
  4114. margin-bottom: 5px;
  4115. }
  4116. .nav-justified > .dropdown .dropdown-menu {
  4117. top: auto;
  4118. left: auto;
  4119. }
  4120. @media (min-width: 768px) {
  4121. .nav-justified > li {
  4122. display: table-cell;
  4123. width: 1%;
  4124. }
  4125. .nav-justified > li > a {
  4126. margin-bottom: 0;
  4127. }
  4128. }
  4129. .nav-tabs-justified {
  4130. border-bottom: 0;
  4131. }
  4132. .nav-tabs-justified > li > a {
  4133. margin-right: 0;
  4134. border-radius: 2px;
  4135. }
  4136. .nav-tabs-justified > .active > a,
  4137. .nav-tabs-justified > .active > a:hover,
  4138. .nav-tabs-justified > .active > a:focus {
  4139. border: 1px solid #ddd;
  4140. }
  4141. @media (min-width: 768px) {
  4142. .nav-tabs-justified > li > a {
  4143. border-bottom: 1px solid #ddd;
  4144. border-radius: 2px 2px 0 0;
  4145. }
  4146. .nav-tabs-justified > .active > a,
  4147. .nav-tabs-justified > .active > a:hover,
  4148. .nav-tabs-justified > .active > a:focus {
  4149. border-bottom-color: #fff;
  4150. }
  4151. }
  4152. .tab-content > .tab-pane {
  4153. display: none;
  4154. }
  4155. .tab-content > .active {
  4156. display: block;
  4157. }
  4158. .nav-tabs .dropdown-menu {
  4159. margin-top: -1px;
  4160. border-top-right-radius: 0;
  4161. border-top-left-radius: 0;
  4162. }
  4163. .navbar {
  4164. position: relative;
  4165. min-height: 30px;
  4166. margin-bottom: 18px;
  4167. border: 1px solid transparent;
  4168. }
  4169. @media (min-width: 541px) {
  4170. .navbar {
  4171. border-radius: 2px;
  4172. }
  4173. }
  4174. @media (min-width: 541px) {
  4175. .navbar-header {
  4176. float: left;
  4177. }
  4178. }
  4179. .navbar-collapse {
  4180. overflow-x: visible;
  4181. padding-right: 0px;
  4182. padding-left: 0px;
  4183. border-top: 1px solid transparent;
  4184. box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  4185. -webkit-overflow-scrolling: touch;
  4186. }
  4187. .navbar-collapse.in {
  4188. overflow-y: auto;
  4189. }
  4190. @media (min-width: 541px) {
  4191. .navbar-collapse {
  4192. width: auto;
  4193. border-top: 0;
  4194. box-shadow: none;
  4195. }
  4196. .navbar-collapse.collapse {
  4197. display: block !important;
  4198. height: auto !important;
  4199. padding-bottom: 0;
  4200. overflow: visible !important;
  4201. }
  4202. .navbar-collapse.in {
  4203. overflow-y: visible;
  4204. }
  4205. .navbar-fixed-top .navbar-collapse,
  4206. .navbar-static-top .navbar-collapse,
  4207. .navbar-fixed-bottom .navbar-collapse {
  4208. padding-left: 0;
  4209. padding-right: 0;
  4210. }
  4211. }
  4212. .navbar-fixed-top .navbar-collapse,
  4213. .navbar-fixed-bottom .navbar-collapse {
  4214. max-height: 340px;
  4215. }
  4216. @media (max-device-width: 540px) and (orientation: landscape) {
  4217. .navbar-fixed-top .navbar-collapse,
  4218. .navbar-fixed-bottom .navbar-collapse {
  4219. max-height: 200px;
  4220. }
  4221. }
  4222. .container > .navbar-header,
  4223. .container-fluid > .navbar-header,
  4224. .container > .navbar-collapse,
  4225. .container-fluid > .navbar-collapse {
  4226. margin-right: 0px;
  4227. margin-left: 0px;
  4228. }
  4229. @media (min-width: 541px) {
  4230. .container > .navbar-header,
  4231. .container-fluid > .navbar-header,
  4232. .container > .navbar-collapse,
  4233. .container-fluid > .navbar-collapse {
  4234. margin-right: 0;
  4235. margin-left: 0;
  4236. }
  4237. }
  4238. .navbar-static-top {
  4239. z-index: 1000;
  4240. border-width: 0 0 1px;
  4241. }
  4242. @media (min-width: 541px) {
  4243. .navbar-static-top {
  4244. border-radius: 0;
  4245. }
  4246. }
  4247. .navbar-fixed-top,
  4248. .navbar-fixed-bottom {
  4249. position: fixed;
  4250. right: 0;
  4251. left: 0;
  4252. z-index: 1030;
  4253. }
  4254. @media (min-width: 541px) {
  4255. .navbar-fixed-top,
  4256. .navbar-fixed-bottom {
  4257. border-radius: 0;
  4258. }
  4259. }
  4260. .navbar-fixed-top {
  4261. top: 0;
  4262. border-width: 0 0 1px;
  4263. }
  4264. .navbar-fixed-bottom {
  4265. bottom: 0;
  4266. margin-bottom: 0;
  4267. border-width: 1px 0 0;
  4268. }
  4269. .navbar-brand {
  4270. float: left;
  4271. padding: 6px 0px;
  4272. font-size: 17px;
  4273. line-height: 18px;
  4274. height: 30px;
  4275. }
  4276. .navbar-brand:hover,
  4277. .navbar-brand:focus {
  4278. text-decoration: none;
  4279. }
  4280. .navbar-brand > img {
  4281. display: block;
  4282. }
  4283. @media (min-width: 541px) {
  4284. .navbar > .container .navbar-brand,
  4285. .navbar > .container-fluid .navbar-brand {
  4286. margin-left: 0px;
  4287. }
  4288. }
  4289. .navbar-toggle {
  4290. position: relative;
  4291. float: right;
  4292. margin-right: 0px;
  4293. padding: 9px 10px;
  4294. margin-top: -2px;
  4295. margin-bottom: -2px;
  4296. background-color: transparent;
  4297. background-image: none;
  4298. border: 1px solid transparent;
  4299. border-radius: 2px;
  4300. }
  4301. .navbar-toggle:focus {
  4302. outline: 0;
  4303. }
  4304. .navbar-toggle .icon-bar {
  4305. display: block;
  4306. width: 22px;
  4307. height: 2px;
  4308. border-radius: 1px;
  4309. }
  4310. .navbar-toggle .icon-bar + .icon-bar {
  4311. margin-top: 4px;
  4312. }
  4313. @media (min-width: 541px) {
  4314. .navbar-toggle {
  4315. display: none;
  4316. }
  4317. }
  4318. .navbar-nav {
  4319. margin: 3px 0px;
  4320. }
  4321. .navbar-nav > li > a {
  4322. padding-top: 10px;
  4323. padding-bottom: 10px;
  4324. line-height: 18px;
  4325. }
  4326. @media (max-width: 540px) {
  4327. .navbar-nav .open .dropdown-menu {
  4328. position: static;
  4329. float: none;
  4330. width: auto;
  4331. margin-top: 0;
  4332. background-color: transparent;
  4333. border: 0;
  4334. box-shadow: none;
  4335. }
  4336. .navbar-nav .open .dropdown-menu > li > a,
  4337. .navbar-nav .open .dropdown-menu .dropdown-header {
  4338. padding: 5px 15px 5px 25px;
  4339. }
  4340. .navbar-nav .open .dropdown-menu > li > a {
  4341. line-height: 18px;
  4342. }
  4343. .navbar-nav .open .dropdown-menu > li > a:hover,
  4344. .navbar-nav .open .dropdown-menu > li > a:focus {
  4345. background-image: none;
  4346. }
  4347. }
  4348. @media (min-width: 541px) {
  4349. .navbar-nav {
  4350. float: left;
  4351. margin: 0;
  4352. }
  4353. .navbar-nav > li {
  4354. float: left;
  4355. }
  4356. .navbar-nav > li > a {
  4357. padding-top: 6px;
  4358. padding-bottom: 6px;
  4359. }
  4360. }
  4361. .navbar-form {
  4362. margin-left: 0px;
  4363. margin-right: 0px;
  4364. padding: 10px 0px;
  4365. border-top: 1px solid transparent;
  4366. border-bottom: 1px solid transparent;
  4367. -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  4368. box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  4369. margin-top: -1px;
  4370. margin-bottom: -1px;
  4371. }
  4372. @media (min-width: 768px) {
  4373. .navbar-form .form-group {
  4374. display: inline-block;
  4375. margin-bottom: 0;
  4376. vertical-align: middle;
  4377. }
  4378. .navbar-form .form-control {
  4379. display: inline-block;
  4380. width: auto;
  4381. vertical-align: middle;
  4382. }
  4383. .navbar-form .form-control-static {
  4384. display: inline-block;
  4385. }
  4386. .navbar-form .input-group {
  4387. display: inline-table;
  4388. vertical-align: middle;
  4389. }
  4390. .navbar-form .input-group .input-group-addon,
  4391. .navbar-form .input-group .input-group-btn,
  4392. .navbar-form .input-group .form-control {
  4393. width: auto;
  4394. }
  4395. .navbar-form .input-group > .form-control {
  4396. width: 100%;
  4397. }
  4398. .navbar-form .control-label {
  4399. margin-bottom: 0;
  4400. vertical-align: middle;
  4401. }
  4402. .navbar-form .radio,
  4403. .navbar-form .checkbox {
  4404. display: inline-block;
  4405. margin-top: 0;
  4406. margin-bottom: 0;
  4407. vertical-align: middle;
  4408. }
  4409. .navbar-form .radio label,
  4410. .navbar-form .checkbox label {
  4411. padding-left: 0;
  4412. }
  4413. .navbar-form .radio input[type="radio"],
  4414. .navbar-form .checkbox input[type="checkbox"] {
  4415. position: relative;
  4416. margin-left: 0;
  4417. }
  4418. .navbar-form .has-feedback .form-control-feedback {
  4419. top: 0;
  4420. }
  4421. }
  4422. @media (max-width: 540px) {
  4423. .navbar-form .form-group {
  4424. margin-bottom: 5px;
  4425. }
  4426. .navbar-form .form-group:last-child {
  4427. margin-bottom: 0;
  4428. }
  4429. }
  4430. @media (min-width: 541px) {
  4431. .navbar-form {
  4432. width: auto;
  4433. border: 0;
  4434. margin-left: 0;
  4435. margin-right: 0;
  4436. padding-top: 0;
  4437. padding-bottom: 0;
  4438. -webkit-box-shadow: none;
  4439. box-shadow: none;
  4440. }
  4441. }
  4442. .navbar-nav > li > .dropdown-menu {
  4443. margin-top: 0;
  4444. border-top-right-radius: 0;
  4445. border-top-left-radius: 0;
  4446. }
  4447. .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  4448. margin-bottom: 0;
  4449. border-top-right-radius: 2px;
  4450. border-top-left-radius: 2px;
  4451. border-bottom-right-radius: 0;
  4452. border-bottom-left-radius: 0;
  4453. }
  4454. .navbar-btn {
  4455. margin-top: -1px;
  4456. margin-bottom: -1px;
  4457. }
  4458. .navbar-btn.btn-sm {
  4459. margin-top: 0px;
  4460. margin-bottom: 0px;
  4461. }
  4462. .navbar-btn.btn-xs {
  4463. margin-top: 4px;
  4464. margin-bottom: 4px;
  4465. }
  4466. .navbar-text {
  4467. margin-top: 6px;
  4468. margin-bottom: 6px;
  4469. }
  4470. @media (min-width: 541px) {
  4471. .navbar-text {
  4472. float: left;
  4473. margin-left: 0px;
  4474. margin-right: 0px;
  4475. }
  4476. }
  4477. @media (min-width: 541px) {
  4478. .navbar-left {
  4479. float: left !important;
  4480. float: left;
  4481. }
  4482. .navbar-right {
  4483. float: right !important;
  4484. float: right;
  4485. margin-right: 0px;
  4486. }
  4487. .navbar-right ~ .navbar-right {
  4488. margin-right: 0;
  4489. }
  4490. }
  4491. .navbar-default {
  4492. background-color: #f8f8f8;
  4493. border-color: #e7e7e7;
  4494. }
  4495. .navbar-default .navbar-brand {
  4496. color: #777;
  4497. }
  4498. .navbar-default .navbar-brand:hover,
  4499. .navbar-default .navbar-brand:focus {
  4500. color: #5e5e5e;
  4501. background-color: transparent;
  4502. }
  4503. .navbar-default .navbar-text {
  4504. color: #777;
  4505. }
  4506. .navbar-default .navbar-nav > li > a {
  4507. color: #777;
  4508. }
  4509. .navbar-default .navbar-nav > li > a:hover,
  4510. .navbar-default .navbar-nav > li > a:focus {
  4511. color: #333;
  4512. background-color: transparent;
  4513. }
  4514. .navbar-default .navbar-nav > .active > a,
  4515. .navbar-default .navbar-nav > .active > a:hover,
  4516. .navbar-default .navbar-nav > .active > a:focus {
  4517. color: #555;
  4518. background-color: #e7e7e7;
  4519. }
  4520. .navbar-default .navbar-nav > .disabled > a,
  4521. .navbar-default .navbar-nav > .disabled > a:hover,
  4522. .navbar-default .navbar-nav > .disabled > a:focus {
  4523. color: #ccc;
  4524. background-color: transparent;
  4525. }
  4526. .navbar-default .navbar-toggle {
  4527. border-color: #ddd;
  4528. }
  4529. .navbar-default .navbar-toggle:hover,
  4530. .navbar-default .navbar-toggle:focus {
  4531. background-color: #ddd;
  4532. }
  4533. .navbar-default .navbar-toggle .icon-bar {
  4534. background-color: #888;
  4535. }
  4536. .navbar-default .navbar-collapse,
  4537. .navbar-default .navbar-form {
  4538. border-color: #e7e7e7;
  4539. }
  4540. .navbar-default .navbar-nav > .open > a,
  4541. .navbar-default .navbar-nav > .open > a:hover,
  4542. .navbar-default .navbar-nav > .open > a:focus {
  4543. background-color: #e7e7e7;
  4544. color: #555;
  4545. }
  4546. @media (max-width: 540px) {
  4547. .navbar-default .navbar-nav .open .dropdown-menu > li > a {
  4548. color: #777;
  4549. }
  4550. .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  4551. .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
  4552. color: #333;
  4553. background-color: transparent;
  4554. }
  4555. .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  4556. .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  4557. .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
  4558. color: #555;
  4559. background-color: #e7e7e7;
  4560. }
  4561. .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  4562. .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  4563. .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
  4564. color: #ccc;
  4565. background-color: transparent;
  4566. }
  4567. }
  4568. .navbar-default .navbar-link {
  4569. color: #777;
  4570. }
  4571. .navbar-default .navbar-link:hover {
  4572. color: #333;
  4573. }
  4574. .navbar-default .btn-link {
  4575. color: #777;
  4576. }
  4577. .navbar-default .btn-link:hover,
  4578. .navbar-default .btn-link:focus {
  4579. color: #333;
  4580. }
  4581. .navbar-default .btn-link[disabled]:hover,
  4582. fieldset[disabled] .navbar-default .btn-link:hover,
  4583. .navbar-default .btn-link[disabled]:focus,
  4584. fieldset[disabled] .navbar-default .btn-link:focus {
  4585. color: #ccc;
  4586. }
  4587. .navbar-inverse {
  4588. background-color: #222;
  4589. border-color: #080808;
  4590. }
  4591. .navbar-inverse .navbar-brand {
  4592. color: #9d9d9d;
  4593. }
  4594. .navbar-inverse .navbar-brand:hover,
  4595. .navbar-inverse .navbar-brand:focus {
  4596. color: #fff;
  4597. background-color: transparent;
  4598. }
  4599. .navbar-inverse .navbar-text {
  4600. color: #9d9d9d;
  4601. }
  4602. .navbar-inverse .navbar-nav > li > a {
  4603. color: #9d9d9d;
  4604. }
  4605. .navbar-inverse .navbar-nav > li > a:hover,
  4606. .navbar-inverse .navbar-nav > li > a:focus {
  4607. color: #fff;
  4608. background-color: transparent;
  4609. }
  4610. .navbar-inverse .navbar-nav > .active > a,
  4611. .navbar-inverse .navbar-nav > .active > a:hover,
  4612. .navbar-inverse .navbar-nav > .active > a:focus {
  4613. color: #fff;
  4614. background-color: #080808;
  4615. }
  4616. .navbar-inverse .navbar-nav > .disabled > a,
  4617. .navbar-inverse .navbar-nav > .disabled > a:hover,
  4618. .navbar-inverse .navbar-nav > .disabled > a:focus {
  4619. color: #444;
  4620. background-color: transparent;
  4621. }
  4622. .navbar-inverse .navbar-toggle {
  4623. border-color: #333;
  4624. }
  4625. .navbar-inverse .navbar-toggle:hover,
  4626. .navbar-inverse .navbar-toggle:focus {
  4627. background-color: #333;
  4628. }
  4629. .navbar-inverse .navbar-toggle .icon-bar {
  4630. background-color: #fff;
  4631. }
  4632. .navbar-inverse .navbar-collapse,
  4633. .navbar-inverse .navbar-form {
  4634. border-color: #101010;
  4635. }
  4636. .navbar-inverse .navbar-nav > .open > a,
  4637. .navbar-inverse .navbar-nav > .open > a:hover,
  4638. .navbar-inverse .navbar-nav > .open > a:focus {
  4639. background-color: #080808;
  4640. color: #fff;
  4641. }
  4642. @media (max-width: 540px) {
  4643. .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
  4644. border-color: #080808;
  4645. }
  4646. .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
  4647. background-color: #080808;
  4648. }
  4649. .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
  4650. color: #9d9d9d;
  4651. }
  4652. .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  4653. .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
  4654. color: #fff;
  4655. background-color: transparent;
  4656. }
  4657. .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  4658. .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  4659. .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
  4660. color: #fff;
  4661. background-color: #080808;
  4662. }
  4663. .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  4664. .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  4665. .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
  4666. color: #444;
  4667. background-color: transparent;
  4668. }
  4669. }
  4670. .navbar-inverse .navbar-link {
  4671. color: #9d9d9d;
  4672. }
  4673. .navbar-inverse .navbar-link:hover {
  4674. color: #fff;
  4675. }
  4676. .navbar-inverse .btn-link {
  4677. color: #9d9d9d;
  4678. }
  4679. .navbar-inverse .btn-link:hover,
  4680. .navbar-inverse .btn-link:focus {
  4681. color: #fff;
  4682. }
  4683. .navbar-inverse .btn-link[disabled]:hover,
  4684. fieldset[disabled] .navbar-inverse .btn-link:hover,
  4685. .navbar-inverse .btn-link[disabled]:focus,
  4686. fieldset[disabled] .navbar-inverse .btn-link:focus {
  4687. color: #444;
  4688. }
  4689. .breadcrumb {
  4690. padding: 8px 15px;
  4691. margin-bottom: 18px;
  4692. list-style: none;
  4693. background-color: #f5f5f5;
  4694. border-radius: 2px;
  4695. }
  4696. .breadcrumb > li {
  4697. display: inline-block;
  4698. }
  4699. .breadcrumb > li + li:before {
  4700. content: "/\00a0";
  4701. padding: 0 5px;
  4702. color: #5e5e5e;
  4703. }
  4704. .breadcrumb > .active {
  4705. color: #777777;
  4706. }
  4707. .pagination {
  4708. display: inline-block;
  4709. padding-left: 0;
  4710. margin: 18px 0;
  4711. border-radius: 2px;
  4712. }
  4713. .pagination > li {
  4714. display: inline;
  4715. }
  4716. .pagination > li > a,
  4717. .pagination > li > span {
  4718. position: relative;
  4719. float: left;
  4720. padding: 6px 12px;
  4721. line-height: 1.42857143;
  4722. text-decoration: none;
  4723. color: #337ab7;
  4724. background-color: #fff;
  4725. border: 1px solid #ddd;
  4726. margin-left: -1px;
  4727. }
  4728. .pagination > li:first-child > a,
  4729. .pagination > li:first-child > span {
  4730. margin-left: 0;
  4731. border-bottom-left-radius: 2px;
  4732. border-top-left-radius: 2px;
  4733. }
  4734. .pagination > li:last-child > a,
  4735. .pagination > li:last-child > span {
  4736. border-bottom-right-radius: 2px;
  4737. border-top-right-radius: 2px;
  4738. }
  4739. .pagination > li > a:hover,
  4740. .pagination > li > span:hover,
  4741. .pagination > li > a:focus,
  4742. .pagination > li > span:focus {
  4743. z-index: 2;
  4744. color: #23527c;
  4745. background-color: #eeeeee;
  4746. border-color: #ddd;
  4747. }
  4748. .pagination > .active > a,
  4749. .pagination > .active > span,
  4750. .pagination > .active > a:hover,
  4751. .pagination > .active > span:hover,
  4752. .pagination > .active > a:focus,
  4753. .pagination > .active > span:focus {
  4754. z-index: 3;
  4755. color: #fff;
  4756. background-color: #337ab7;
  4757. border-color: #337ab7;
  4758. cursor: default;
  4759. }
  4760. .pagination > .disabled > span,
  4761. .pagination > .disabled > span:hover,
  4762. .pagination > .disabled > span:focus,
  4763. .pagination > .disabled > a,
  4764. .pagination > .disabled > a:hover,
  4765. .pagination > .disabled > a:focus {
  4766. color: #777777;
  4767. background-color: #fff;
  4768. border-color: #ddd;
  4769. cursor: not-allowed;
  4770. }
  4771. .pagination-lg > li > a,
  4772. .pagination-lg > li > span {
  4773. padding: 10px 16px;
  4774. font-size: 17px;
  4775. line-height: 1.3333333;
  4776. }
  4777. .pagination-lg > li:first-child > a,
  4778. .pagination-lg > li:first-child > span {
  4779. border-bottom-left-radius: 3px;
  4780. border-top-left-radius: 3px;
  4781. }
  4782. .pagination-lg > li:last-child > a,
  4783. .pagination-lg > li:last-child > span {
  4784. border-bottom-right-radius: 3px;
  4785. border-top-right-radius: 3px;
  4786. }
  4787. .pagination-sm > li > a,
  4788. .pagination-sm > li > span {
  4789. padding: 5px 10px;
  4790. font-size: 12px;
  4791. line-height: 1.5;
  4792. }
  4793. .pagination-sm > li:first-child > a,
  4794. .pagination-sm > li:first-child > span {
  4795. border-bottom-left-radius: 1px;
  4796. border-top-left-radius: 1px;
  4797. }
  4798. .pagination-sm > li:last-child > a,
  4799. .pagination-sm > li:last-child > span {
  4800. border-bottom-right-radius: 1px;
  4801. border-top-right-radius: 1px;
  4802. }
  4803. .pager {
  4804. padding-left: 0;
  4805. margin: 18px 0;
  4806. list-style: none;
  4807. text-align: center;
  4808. }
  4809. .pager li {
  4810. display: inline;
  4811. }
  4812. .pager li > a,
  4813. .pager li > span {
  4814. display: inline-block;
  4815. padding: 5px 14px;
  4816. background-color: #fff;
  4817. border: 1px solid #ddd;
  4818. border-radius: 15px;
  4819. }
  4820. .pager li > a:hover,
  4821. .pager li > a:focus {
  4822. text-decoration: none;
  4823. background-color: #eeeeee;
  4824. }
  4825. .pager .next > a,
  4826. .pager .next > span {
  4827. float: right;
  4828. }
  4829. .pager .previous > a,
  4830. .pager .previous > span {
  4831. float: left;
  4832. }
  4833. .pager .disabled > a,
  4834. .pager .disabled > a:hover,
  4835. .pager .disabled > a:focus,
  4836. .pager .disabled > span {
  4837. color: #777777;
  4838. background-color: #fff;
  4839. cursor: not-allowed;
  4840. }
  4841. .label {
  4842. display: inline;
  4843. padding: .2em .6em .3em;
  4844. font-size: 75%;
  4845. font-weight: bold;
  4846. line-height: 1;
  4847. color: #fff;
  4848. text-align: center;
  4849. white-space: nowrap;
  4850. vertical-align: baseline;
  4851. border-radius: .25em;
  4852. }
  4853. a.label:hover,
  4854. a.label:focus {
  4855. color: #fff;
  4856. text-decoration: none;
  4857. cursor: pointer;
  4858. }
  4859. .label:empty {
  4860. display: none;
  4861. }
  4862. .btn .label {
  4863. position: relative;
  4864. top: -1px;
  4865. }
  4866. .label-default {
  4867. background-color: #777777;
  4868. }
  4869. .label-default[href]:hover,
  4870. .label-default[href]:focus {
  4871. background-color: #5e5e5e;
  4872. }
  4873. .label-primary {
  4874. background-color: #337ab7;
  4875. }
  4876. .label-primary[href]:hover,
  4877. .label-primary[href]:focus {
  4878. background-color: #286090;
  4879. }
  4880. .label-success {
  4881. background-color: #5cb85c;
  4882. }
  4883. .label-success[href]:hover,
  4884. .label-success[href]:focus {
  4885. background-color: #449d44;
  4886. }
  4887. .label-info {
  4888. background-color: #5bc0de;
  4889. }
  4890. .label-info[href]:hover,
  4891. .label-info[href]:focus {
  4892. background-color: #31b0d5;
  4893. }
  4894. .label-warning {
  4895. background-color: #f0ad4e;
  4896. }
  4897. .label-warning[href]:hover,
  4898. .label-warning[href]:focus {
  4899. background-color: #ec971f;
  4900. }
  4901. .label-danger {
  4902. background-color: #d9534f;
  4903. }
  4904. .label-danger[href]:hover,
  4905. .label-danger[href]:focus {
  4906. background-color: #c9302c;
  4907. }
  4908. .badge {
  4909. display: inline-block;
  4910. min-width: 10px;
  4911. padding: 3px 7px;
  4912. font-size: 12px;
  4913. font-weight: bold;
  4914. color: #fff;
  4915. line-height: 1;
  4916. vertical-align: middle;
  4917. white-space: nowrap;
  4918. text-align: center;
  4919. background-color: #777777;
  4920. border-radius: 10px;
  4921. }
  4922. .badge:empty {
  4923. display: none;
  4924. }
  4925. .btn .badge {
  4926. position: relative;
  4927. top: -1px;
  4928. }
  4929. .btn-xs .badge,
  4930. .btn-group-xs > .btn .badge {
  4931. top: 0;
  4932. padding: 1px 5px;
  4933. }
  4934. a.badge:hover,
  4935. a.badge:focus {
  4936. color: #fff;
  4937. text-decoration: none;
  4938. cursor: pointer;
  4939. }
  4940. .list-group-item.active > .badge,
  4941. .nav-pills > .active > a > .badge {
  4942. color: #337ab7;
  4943. background-color: #fff;
  4944. }
  4945. .list-group-item > .badge {
  4946. float: right;
  4947. }
  4948. .list-group-item > .badge + .badge {
  4949. margin-right: 5px;
  4950. }
  4951. .nav-pills > li > a > .badge {
  4952. margin-left: 3px;
  4953. }
  4954. .jumbotron {
  4955. padding-top: 30px;
  4956. padding-bottom: 30px;
  4957. margin-bottom: 30px;
  4958. color: inherit;
  4959. background-color: #eeeeee;
  4960. }
  4961. .jumbotron h1,
  4962. .jumbotron .h1 {
  4963. color: inherit;
  4964. }
  4965. .jumbotron p {
  4966. margin-bottom: 15px;
  4967. font-size: 20px;
  4968. font-weight: 200;
  4969. }
  4970. .jumbotron > hr {
  4971. border-top-color: #d5d5d5;
  4972. }
  4973. .container .jumbotron,
  4974. .container-fluid .jumbotron {
  4975. border-radius: 3px;
  4976. padding-left: 0px;
  4977. padding-right: 0px;
  4978. }
  4979. .jumbotron .container {
  4980. max-width: 100%;
  4981. }
  4982. @media screen and (min-width: 768px) {
  4983. .jumbotron {
  4984. padding-top: 48px;
  4985. padding-bottom: 48px;
  4986. }
  4987. .container .jumbotron,
  4988. .container-fluid .jumbotron {
  4989. padding-left: 60px;
  4990. padding-right: 60px;
  4991. }
  4992. .jumbotron h1,
  4993. .jumbotron .h1 {
  4994. font-size: 59px;
  4995. }
  4996. }
  4997. .thumbnail {
  4998. display: block;
  4999. padding: 4px;
  5000. margin-bottom: 18px;
  5001. line-height: 1.42857143;
  5002. background-color: #fff;
  5003. border: 1px solid #ddd;
  5004. border-radius: 2px;
  5005. -webkit-transition: border 0.2s ease-in-out;
  5006. -o-transition: border 0.2s ease-in-out;
  5007. transition: border 0.2s ease-in-out;
  5008. }
  5009. .thumbnail > img,
  5010. .thumbnail a > img {
  5011. margin-left: auto;
  5012. margin-right: auto;
  5013. }
  5014. a.thumbnail:hover,
  5015. a.thumbnail:focus,
  5016. a.thumbnail.active {
  5017. border-color: #337ab7;
  5018. }
  5019. .thumbnail .caption {
  5020. padding: 9px;
  5021. color: #000;
  5022. }
  5023. .alert {
  5024. padding: 15px;
  5025. margin-bottom: 18px;
  5026. border: 1px solid transparent;
  5027. border-radius: 2px;
  5028. }
  5029. .alert h4 {
  5030. margin-top: 0;
  5031. color: inherit;
  5032. }
  5033. .alert .alert-link {
  5034. font-weight: bold;
  5035. }
  5036. .alert > p,
  5037. .alert > ul {
  5038. margin-bottom: 0;
  5039. }
  5040. .alert > p + p {
  5041. margin-top: 5px;
  5042. }
  5043. .alert-dismissable,
  5044. .alert-dismissible {
  5045. padding-right: 35px;
  5046. }
  5047. .alert-dismissable .close,
  5048. .alert-dismissible .close {
  5049. position: relative;
  5050. top: -2px;
  5051. right: -21px;
  5052. color: inherit;
  5053. }
  5054. .alert-success {
  5055. background-color: #dff0d8;
  5056. border-color: #d6e9c6;
  5057. color: #3c763d;
  5058. }
  5059. .alert-success hr {
  5060. border-top-color: #c9e2b3;
  5061. }
  5062. .alert-success .alert-link {
  5063. color: #2b542c;
  5064. }
  5065. .alert-info {
  5066. background-color: #d9edf7;
  5067. border-color: #bce8f1;
  5068. color: #31708f;
  5069. }
  5070. .alert-info hr {
  5071. border-top-color: #a6e1ec;
  5072. }
  5073. .alert-info .alert-link {
  5074. color: #245269;
  5075. }
  5076. .alert-warning {
  5077. background-color: #fcf8e3;
  5078. border-color: #faebcc;
  5079. color: #8a6d3b;
  5080. }
  5081. .alert-warning hr {
  5082. border-top-color: #f7e1b5;
  5083. }
  5084. .alert-warning .alert-link {
  5085. color: #66512c;
  5086. }
  5087. .alert-danger {
  5088. background-color: #f2dede;
  5089. border-color: #ebccd1;
  5090. color: #a94442;
  5091. }
  5092. .alert-danger hr {
  5093. border-top-color: #e4b9c0;
  5094. }
  5095. .alert-danger .alert-link {
  5096. color: #843534;
  5097. }
  5098. @-webkit-keyframes progress-bar-stripes {
  5099. from {
  5100. background-position: 40px 0;
  5101. }
  5102. to {
  5103. background-position: 0 0;
  5104. }
  5105. }
  5106. @keyframes progress-bar-stripes {
  5107. from {
  5108. background-position: 40px 0;
  5109. }
  5110. to {
  5111. background-position: 0 0;
  5112. }
  5113. }
  5114. .progress {
  5115. overflow: hidden;
  5116. height: 18px;
  5117. margin-bottom: 18px;
  5118. background-color: #f5f5f5;
  5119. border-radius: 2px;
  5120. -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  5121. box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  5122. }
  5123. .progress-bar {
  5124. float: left;
  5125. width: 0%;
  5126. height: 100%;
  5127. font-size: 12px;
  5128. line-height: 18px;
  5129. color: #fff;
  5130. text-align: center;
  5131. background-color: #337ab7;
  5132. -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  5133. box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  5134. -webkit-transition: width 0.6s ease;
  5135. -o-transition: width 0.6s ease;
  5136. transition: width 0.6s ease;
  5137. }
  5138. .progress-striped .progress-bar,
  5139. .progress-bar-striped {
  5140. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5141. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5142. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5143. background-size: 40px 40px;
  5144. }
  5145. .progress.active .progress-bar,
  5146. .progress-bar.active {
  5147. -webkit-animation: progress-bar-stripes 2s linear infinite;
  5148. -o-animation: progress-bar-stripes 2s linear infinite;
  5149. animation: progress-bar-stripes 2s linear infinite;
  5150. }
  5151. .progress-bar-success {
  5152. background-color: #5cb85c;
  5153. }
  5154. .progress-striped .progress-bar-success {
  5155. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5156. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5157. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5158. }
  5159. .progress-bar-info {
  5160. background-color: #5bc0de;
  5161. }
  5162. .progress-striped .progress-bar-info {
  5163. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5164. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5165. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5166. }
  5167. .progress-bar-warning {
  5168. background-color: #f0ad4e;
  5169. }
  5170. .progress-striped .progress-bar-warning {
  5171. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5172. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5173. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5174. }
  5175. .progress-bar-danger {
  5176. background-color: #d9534f;
  5177. }
  5178. .progress-striped .progress-bar-danger {
  5179. background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5180. background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5181. background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  5182. }
  5183. .media {
  5184. margin-top: 15px;
  5185. }
  5186. .media:first-child {
  5187. margin-top: 0;
  5188. }
  5189. .media,
  5190. .media-body {
  5191. zoom: 1;
  5192. overflow: hidden;
  5193. }
  5194. .media-body {
  5195. width: 10000px;
  5196. }
  5197. .media-object {
  5198. display: block;
  5199. }
  5200. .media-object.img-thumbnail {
  5201. max-width: none;
  5202. }
  5203. .media-right,
  5204. .media > .pull-right {
  5205. padding-left: 10px;
  5206. }
  5207. .media-left,
  5208. .media > .pull-left {
  5209. padding-right: 10px;
  5210. }
  5211. .media-left,
  5212. .media-right,
  5213. .media-body {
  5214. display: table-cell;
  5215. vertical-align: top;
  5216. }
  5217. .media-middle {
  5218. vertical-align: middle;
  5219. }
  5220. .media-bottom {
  5221. vertical-align: bottom;
  5222. }
  5223. .media-heading {
  5224. margin-top: 0;
  5225. margin-bottom: 5px;
  5226. }
  5227. .media-list {
  5228. padding-left: 0;
  5229. list-style: none;
  5230. }
  5231. .list-group {
  5232. margin-bottom: 20px;
  5233. padding-left: 0;
  5234. }
  5235. .list-group-item {
  5236. position: relative;
  5237. display: block;
  5238. padding: 10px 15px;
  5239. margin-bottom: -1px;
  5240. background-color: #fff;
  5241. border: 1px solid #ddd;
  5242. }
  5243. .list-group-item:first-child {
  5244. border-top-right-radius: 2px;
  5245. border-top-left-radius: 2px;
  5246. }
  5247. .list-group-item:last-child {
  5248. margin-bottom: 0;
  5249. border-bottom-right-radius: 2px;
  5250. border-bottom-left-radius: 2px;
  5251. }
  5252. a.list-group-item,
  5253. button.list-group-item {
  5254. color: #555;
  5255. }
  5256. a.list-group-item .list-group-item-heading,
  5257. button.list-group-item .list-group-item-heading {
  5258. color: #333;
  5259. }
  5260. a.list-group-item:hover,
  5261. button.list-group-item:hover,
  5262. a.list-group-item:focus,
  5263. button.list-group-item:focus {
  5264. text-decoration: none;
  5265. color: #555;
  5266. background-color: #f5f5f5;
  5267. }
  5268. button.list-group-item {
  5269. width: 100%;
  5270. text-align: left;
  5271. }
  5272. .list-group-item.disabled,
  5273. .list-group-item.disabled:hover,
  5274. .list-group-item.disabled:focus {
  5275. background-color: #eeeeee;
  5276. color: #777777;
  5277. cursor: not-allowed;
  5278. }
  5279. .list-group-item.disabled .list-group-item-heading,
  5280. .list-group-item.disabled:hover .list-group-item-heading,
  5281. .list-group-item.disabled:focus .list-group-item-heading {
  5282. color: inherit;
  5283. }
  5284. .list-group-item.disabled .list-group-item-text,
  5285. .list-group-item.disabled:hover .list-group-item-text,
  5286. .list-group-item.disabled:focus .list-group-item-text {
  5287. color: #777777;
  5288. }
  5289. .list-group-item.active,
  5290. .list-group-item.active:hover,
  5291. .list-group-item.active:focus {
  5292. z-index: 2;
  5293. color: #fff;
  5294. background-color: #337ab7;
  5295. border-color: #337ab7;
  5296. }
  5297. .list-group-item.active .list-group-item-heading,
  5298. .list-group-item.active:hover .list-group-item-heading,
  5299. .list-group-item.active:focus .list-group-item-heading,
  5300. .list-group-item.active .list-group-item-heading > small,
  5301. .list-group-item.active:hover .list-group-item-heading > small,
  5302. .list-group-item.active:focus .list-group-item-heading > small,
  5303. .list-group-item.active .list-group-item-heading > .small,
  5304. .list-group-item.active:hover .list-group-item-heading > .small,
  5305. .list-group-item.active:focus .list-group-item-heading > .small {
  5306. color: inherit;
  5307. }
  5308. .list-group-item.active .list-group-item-text,
  5309. .list-group-item.active:hover .list-group-item-text,
  5310. .list-group-item.active:focus .list-group-item-text {
  5311. color: #c7ddef;
  5312. }
  5313. .list-group-item-success {
  5314. color: #3c763d;
  5315. background-color: #dff0d8;
  5316. }
  5317. a.list-group-item-success,
  5318. button.list-group-item-success {
  5319. color: #3c763d;
  5320. }
  5321. a.list-group-item-success .list-group-item-heading,
  5322. button.list-group-item-success .list-group-item-heading {
  5323. color: inherit;
  5324. }
  5325. a.list-group-item-success:hover,
  5326. button.list-group-item-success:hover,
  5327. a.list-group-item-success:focus,
  5328. button.list-group-item-success:focus {
  5329. color: #3c763d;
  5330. background-color: #d0e9c6;
  5331. }
  5332. a.list-group-item-success.active,
  5333. button.list-group-item-success.active,
  5334. a.list-group-item-success.active:hover,
  5335. button.list-group-item-success.active:hover,
  5336. a.list-group-item-success.active:focus,
  5337. button.list-group-item-success.active:focus {
  5338. color: #fff;
  5339. background-color: #3c763d;
  5340. border-color: #3c763d;
  5341. }
  5342. .list-group-item-info {
  5343. color: #31708f;
  5344. background-color: #d9edf7;
  5345. }
  5346. a.list-group-item-info,
  5347. button.list-group-item-info {
  5348. color: #31708f;
  5349. }
  5350. a.list-group-item-info .list-group-item-heading,
  5351. button.list-group-item-info .list-group-item-heading {
  5352. color: inherit;
  5353. }
  5354. a.list-group-item-info:hover,
  5355. button.list-group-item-info:hover,
  5356. a.list-group-item-info:focus,
  5357. button.list-group-item-info:focus {
  5358. color: #31708f;
  5359. background-color: #c4e3f3;
  5360. }
  5361. a.list-group-item-info.active,
  5362. button.list-group-item-info.active,
  5363. a.list-group-item-info.active:hover,
  5364. button.list-group-item-info.active:hover,
  5365. a.list-group-item-info.active:focus,
  5366. button.list-group-item-info.active:focus {
  5367. color: #fff;
  5368. background-color: #31708f;
  5369. border-color: #31708f;
  5370. }
  5371. .list-group-item-warning {
  5372. color: #8a6d3b;
  5373. background-color: #fcf8e3;
  5374. }
  5375. a.list-group-item-warning,
  5376. button.list-group-item-warning {
  5377. color: #8a6d3b;
  5378. }
  5379. a.list-group-item-warning .list-group-item-heading,
  5380. button.list-group-item-warning .list-group-item-heading {
  5381. color: inherit;
  5382. }
  5383. a.list-group-item-warning:hover,
  5384. button.list-group-item-warning:hover,
  5385. a.list-group-item-warning:focus,
  5386. button.list-group-item-warning:focus {
  5387. color: #8a6d3b;
  5388. background-color: #faf2cc;
  5389. }
  5390. a.list-group-item-warning.active,
  5391. button.list-group-item-warning.active,
  5392. a.list-group-item-warning.active:hover,
  5393. button.list-group-item-warning.active:hover,
  5394. a.list-group-item-warning.active:focus,
  5395. button.list-group-item-warning.active:focus {
  5396. color: #fff;
  5397. background-color: #8a6d3b;
  5398. border-color: #8a6d3b;
  5399. }
  5400. .list-group-item-danger {
  5401. color: #a94442;
  5402. background-color: #f2dede;
  5403. }
  5404. a.list-group-item-danger,
  5405. button.list-group-item-danger {
  5406. color: #a94442;
  5407. }
  5408. a.list-group-item-danger .list-group-item-heading,
  5409. button.list-group-item-danger .list-group-item-heading {
  5410. color: inherit;
  5411. }
  5412. a.list-group-item-danger:hover,
  5413. button.list-group-item-danger:hover,
  5414. a.list-group-item-danger:focus,
  5415. button.list-group-item-danger:focus {
  5416. color: #a94442;
  5417. background-color: #ebcccc;
  5418. }
  5419. a.list-group-item-danger.active,
  5420. button.list-group-item-danger.active,
  5421. a.list-group-item-danger.active:hover,
  5422. button.list-group-item-danger.active:hover,
  5423. a.list-group-item-danger.active:focus,
  5424. button.list-group-item-danger.active:focus {
  5425. color: #fff;
  5426. background-color: #a94442;
  5427. border-color: #a94442;
  5428. }
  5429. .list-group-item-heading {
  5430. margin-top: 0;
  5431. margin-bottom: 5px;
  5432. }
  5433. .list-group-item-text {
  5434. margin-bottom: 0;
  5435. line-height: 1.3;
  5436. }
  5437. .panel {
  5438. margin-bottom: 18px;
  5439. background-color: #fff;
  5440. border: 1px solid transparent;
  5441. border-radius: 2px;
  5442. -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  5443. box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  5444. }
  5445. .panel-body {
  5446. padding: 15px;
  5447. }
  5448. .panel-heading {
  5449. padding: 10px 15px;
  5450. border-bottom: 1px solid transparent;
  5451. border-top-right-radius: 1px;
  5452. border-top-left-radius: 1px;
  5453. }
  5454. .panel-heading > .dropdown .dropdown-toggle {
  5455. color: inherit;
  5456. }
  5457. .panel-title {
  5458. margin-top: 0;
  5459. margin-bottom: 0;
  5460. font-size: 15px;
  5461. color: inherit;
  5462. }
  5463. .panel-title > a,
  5464. .panel-title > small,
  5465. .panel-title > .small,
  5466. .panel-title > small > a,
  5467. .panel-title > .small > a {
  5468. color: inherit;
  5469. }
  5470. .panel-footer {
  5471. padding: 10px 15px;
  5472. background-color: #f5f5f5;
  5473. border-top: 1px solid #ddd;
  5474. border-bottom-right-radius: 1px;
  5475. border-bottom-left-radius: 1px;
  5476. }
  5477. .panel > .list-group,
  5478. .panel > .panel-collapse > .list-group {
  5479. margin-bottom: 0;
  5480. }
  5481. .panel > .list-group .list-group-item,
  5482. .panel > .panel-collapse > .list-group .list-group-item {
  5483. border-width: 1px 0;
  5484. border-radius: 0;
  5485. }
  5486. .panel > .list-group:first-child .list-group-item:first-child,
  5487. .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  5488. border-top: 0;
  5489. border-top-right-radius: 1px;
  5490. border-top-left-radius: 1px;
  5491. }
  5492. .panel > .list-group:last-child .list-group-item:last-child,
  5493. .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  5494. border-bottom: 0;
  5495. border-bottom-right-radius: 1px;
  5496. border-bottom-left-radius: 1px;
  5497. }
  5498. .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  5499. border-top-right-radius: 0;
  5500. border-top-left-radius: 0;
  5501. }
  5502. .panel-heading + .list-group .list-group-item:first-child {
  5503. border-top-width: 0;
  5504. }
  5505. .list-group + .panel-footer {
  5506. border-top-width: 0;
  5507. }
  5508. .panel > .table,
  5509. .panel > .table-responsive > .table,
  5510. .panel > .panel-collapse > .table {
  5511. margin-bottom: 0;
  5512. }
  5513. .panel > .table caption,
  5514. .panel > .table-responsive > .table caption,
  5515. .panel > .panel-collapse > .table caption {
  5516. padding-left: 15px;
  5517. padding-right: 15px;
  5518. }
  5519. .panel > .table:first-child,
  5520. .panel > .table-responsive:first-child > .table:first-child {
  5521. border-top-right-radius: 1px;
  5522. border-top-left-radius: 1px;
  5523. }
  5524. .panel > .table:first-child > thead:first-child > tr:first-child,
  5525. .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
  5526. .panel > .table:first-child > tbody:first-child > tr:first-child,
  5527. .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  5528. border-top-left-radius: 1px;
  5529. border-top-right-radius: 1px;
  5530. }
  5531. .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
  5532. .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
  5533. .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
  5534. .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
  5535. .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
  5536. .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
  5537. .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
  5538. .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  5539. border-top-left-radius: 1px;
  5540. }
  5541. .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
  5542. .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
  5543. .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
  5544. .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
  5545. .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
  5546. .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
  5547. .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
  5548. .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  5549. border-top-right-radius: 1px;
  5550. }
  5551. .panel > .table:last-child,
  5552. .panel > .table-responsive:last-child > .table:last-child {
  5553. border-bottom-right-radius: 1px;
  5554. border-bottom-left-radius: 1px;
  5555. }
  5556. .panel > .table:last-child > tbody:last-child > tr:last-child,
  5557. .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
  5558. .panel > .table:last-child > tfoot:last-child > tr:last-child,
  5559. .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  5560. border-bottom-left-radius: 1px;
  5561. border-bottom-right-radius: 1px;
  5562. }
  5563. .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
  5564. .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
  5565. .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
  5566. .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
  5567. .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
  5568. .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
  5569. .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
  5570. .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  5571. border-bottom-left-radius: 1px;
  5572. }
  5573. .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
  5574. .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
  5575. .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
  5576. .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
  5577. .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
  5578. .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
  5579. .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
  5580. .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  5581. border-bottom-right-radius: 1px;
  5582. }
  5583. .panel > .panel-body + .table,
  5584. .panel > .panel-body + .table-responsive,
  5585. .panel > .table + .panel-body,
  5586. .panel > .table-responsive + .panel-body {
  5587. border-top: 1px solid #ddd;
  5588. }
  5589. .panel > .table > tbody:first-child > tr:first-child th,
  5590. .panel > .table > tbody:first-child > tr:first-child td {
  5591. border-top: 0;
  5592. }
  5593. .panel > .table-bordered,
  5594. .panel > .table-responsive > .table-bordered {
  5595. border: 0;
  5596. }
  5597. .panel > .table-bordered > thead > tr > th:first-child,
  5598. .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
  5599. .panel > .table-bordered > tbody > tr > th:first-child,
  5600. .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
  5601. .panel > .table-bordered > tfoot > tr > th:first-child,
  5602. .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  5603. .panel > .table-bordered > thead > tr > td:first-child,
  5604. .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
  5605. .panel > .table-bordered > tbody > tr > td:first-child,
  5606. .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
  5607. .panel > .table-bordered > tfoot > tr > td:first-child,
  5608. .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  5609. border-left: 0;
  5610. }
  5611. .panel > .table-bordered > thead > tr > th:last-child,
  5612. .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
  5613. .panel > .table-bordered > tbody > tr > th:last-child,
  5614. .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
  5615. .panel > .table-bordered > tfoot > tr > th:last-child,
  5616. .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  5617. .panel > .table-bordered > thead > tr > td:last-child,
  5618. .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
  5619. .panel > .table-bordered > tbody > tr > td:last-child,
  5620. .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
  5621. .panel > .table-bordered > tfoot > tr > td:last-child,
  5622. .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  5623. border-right: 0;
  5624. }
  5625. .panel > .table-bordered > thead > tr:first-child > td,
  5626. .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
  5627. .panel > .table-bordered > tbody > tr:first-child > td,
  5628. .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
  5629. .panel > .table-bordered > thead > tr:first-child > th,
  5630. .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
  5631. .panel > .table-bordered > tbody > tr:first-child > th,
  5632. .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  5633. border-bottom: 0;
  5634. }
  5635. .panel > .table-bordered > tbody > tr:last-child > td,
  5636. .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
  5637. .panel > .table-bordered > tfoot > tr:last-child > td,
  5638. .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
  5639. .panel > .table-bordered > tbody > tr:last-child > th,
  5640. .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
  5641. .panel > .table-bordered > tfoot > tr:last-child > th,
  5642. .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  5643. border-bottom: 0;
  5644. }
  5645. .panel > .table-responsive {
  5646. border: 0;
  5647. margin-bottom: 0;
  5648. }
  5649. .panel-group {
  5650. margin-bottom: 18px;
  5651. }
  5652. .panel-group .panel {
  5653. margin-bottom: 0;
  5654. border-radius: 2px;
  5655. }
  5656. .panel-group .panel + .panel {
  5657. margin-top: 5px;
  5658. }
  5659. .panel-group .panel-heading {
  5660. border-bottom: 0;
  5661. }
  5662. .panel-group .panel-heading + .panel-collapse > .panel-body,
  5663. .panel-group .panel-heading + .panel-collapse > .list-group {
  5664. border-top: 1px solid #ddd;
  5665. }
  5666. .panel-group .panel-footer {
  5667. border-top: 0;
  5668. }
  5669. .panel-group .panel-footer + .panel-collapse .panel-body {
  5670. border-bottom: 1px solid #ddd;
  5671. }
  5672. .panel-default {
  5673. border-color: #ddd;
  5674. }
  5675. .panel-default > .panel-heading {
  5676. color: #333333;
  5677. background-color: #f5f5f5;
  5678. border-color: #ddd;
  5679. }
  5680. .panel-default > .panel-heading + .panel-collapse > .panel-body {
  5681. border-top-color: #ddd;
  5682. }
  5683. .panel-default > .panel-heading .badge {
  5684. color: #f5f5f5;
  5685. background-color: #333333;
  5686. }
  5687. .panel-default > .panel-footer + .panel-collapse > .panel-body {
  5688. border-bottom-color: #ddd;
  5689. }
  5690. .panel-primary {
  5691. border-color: #337ab7;
  5692. }
  5693. .panel-primary > .panel-heading {
  5694. color: #fff;
  5695. background-color: #337ab7;
  5696. border-color: #337ab7;
  5697. }
  5698. .panel-primary > .panel-heading + .panel-collapse > .panel-body {
  5699. border-top-color: #337ab7;
  5700. }
  5701. .panel-primary > .panel-heading .badge {
  5702. color: #337ab7;
  5703. background-color: #fff;
  5704. }
  5705. .panel-primary > .panel-footer + .panel-collapse > .panel-body {
  5706. border-bottom-color: #337ab7;
  5707. }
  5708. .panel-success {
  5709. border-color: #d6e9c6;
  5710. }
  5711. .panel-success > .panel-heading {
  5712. color: #3c763d;
  5713. background-color: #dff0d8;
  5714. border-color: #d6e9c6;
  5715. }
  5716. .panel-success > .panel-heading + .panel-collapse > .panel-body {
  5717. border-top-color: #d6e9c6;
  5718. }
  5719. .panel-success > .panel-heading .badge {
  5720. color: #dff0d8;
  5721. background-color: #3c763d;
  5722. }
  5723. .panel-success > .panel-footer + .panel-collapse > .panel-body {
  5724. border-bottom-color: #d6e9c6;
  5725. }
  5726. .panel-info {
  5727. border-color: #bce8f1;
  5728. }
  5729. .panel-info > .panel-heading {
  5730. color: #31708f;
  5731. background-color: #d9edf7;
  5732. border-color: #bce8f1;
  5733. }
  5734. .panel-info > .panel-heading + .panel-collapse > .panel-body {
  5735. border-top-color: #bce8f1;
  5736. }
  5737. .panel-info > .panel-heading .badge {
  5738. color: #d9edf7;
  5739. background-color: #31708f;
  5740. }
  5741. .panel-info > .panel-footer + .panel-collapse > .panel-body {
  5742. border-bottom-color: #bce8f1;
  5743. }
  5744. .panel-warning {
  5745. border-color: #faebcc;
  5746. }
  5747. .panel-warning > .panel-heading {
  5748. color: #8a6d3b;
  5749. background-color: #fcf8e3;
  5750. border-color: #faebcc;
  5751. }
  5752. .panel-warning > .panel-heading + .panel-collapse > .panel-body {
  5753. border-top-color: #faebcc;
  5754. }
  5755. .panel-warning > .panel-heading .badge {
  5756. color: #fcf8e3;
  5757. background-color: #8a6d3b;
  5758. }
  5759. .panel-warning > .panel-footer + .panel-collapse > .panel-body {
  5760. border-bottom-color: #faebcc;
  5761. }
  5762. .panel-danger {
  5763. border-color: #ebccd1;
  5764. }
  5765. .panel-danger > .panel-heading {
  5766. color: #a94442;
  5767. background-color: #f2dede;
  5768. border-color: #ebccd1;
  5769. }
  5770. .panel-danger > .panel-heading + .panel-collapse > .panel-body {
  5771. border-top-color: #ebccd1;
  5772. }
  5773. .panel-danger > .panel-heading .badge {
  5774. color: #f2dede;
  5775. background-color: #a94442;
  5776. }
  5777. .panel-danger > .panel-footer + .panel-collapse > .panel-body {
  5778. border-bottom-color: #ebccd1;
  5779. }
  5780. .embed-responsive {
  5781. position: relative;
  5782. display: block;
  5783. height: 0;
  5784. padding: 0;
  5785. overflow: hidden;
  5786. }
  5787. .embed-responsive .embed-responsive-item,
  5788. .embed-responsive iframe,
  5789. .embed-responsive embed,
  5790. .embed-responsive object,
  5791. .embed-responsive video {
  5792. position: absolute;
  5793. top: 0;
  5794. left: 0;
  5795. bottom: 0;
  5796. height: 100%;
  5797. width: 100%;
  5798. border: 0;
  5799. }
  5800. .embed-responsive-16by9 {
  5801. padding-bottom: 56.25%;
  5802. }
  5803. .embed-responsive-4by3 {
  5804. padding-bottom: 75%;
  5805. }
  5806. .well {
  5807. min-height: 20px;
  5808. padding: 19px;
  5809. margin-bottom: 20px;
  5810. background-color: #f5f5f5;
  5811. border: 1px solid #e3e3e3;
  5812. border-radius: 2px;
  5813. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  5814. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  5815. }
  5816. .well blockquote {
  5817. border-color: #ddd;
  5818. border-color: rgba(0, 0, 0, 0.15);
  5819. }
  5820. .well-lg {
  5821. padding: 24px;
  5822. border-radius: 3px;
  5823. }
  5824. .well-sm {
  5825. padding: 9px;
  5826. border-radius: 1px;
  5827. }
  5828. .close {
  5829. float: right;
  5830. font-size: 19.5px;
  5831. font-weight: bold;
  5832. line-height: 1;
  5833. color: #000;
  5834. text-shadow: 0 1px 0 #fff;
  5835. opacity: 0.2;
  5836. filter: alpha(opacity=20);
  5837. }
  5838. .close:hover,
  5839. .close:focus {
  5840. color: #000;
  5841. text-decoration: none;
  5842. cursor: pointer;
  5843. opacity: 0.5;
  5844. filter: alpha(opacity=50);
  5845. }
  5846. button.close {
  5847. padding: 0;
  5848. cursor: pointer;
  5849. background: transparent;
  5850. border: 0;
  5851. -webkit-appearance: none;
  5852. }
  5853. .modal-open {
  5854. overflow: hidden;
  5855. }
  5856. .modal {
  5857. display: none;
  5858. overflow: hidden;
  5859. position: fixed;
  5860. top: 0;
  5861. right: 0;
  5862. bottom: 0;
  5863. left: 0;
  5864. z-index: 1050;
  5865. -webkit-overflow-scrolling: touch;
  5866. outline: 0;
  5867. }
  5868. .modal.fade .modal-dialog {
  5869. -webkit-transform: translate(0, -25%);
  5870. -ms-transform: translate(0, -25%);
  5871. -o-transform: translate(0, -25%);
  5872. transform: translate(0, -25%);
  5873. -webkit-transition: -webkit-transform 0.3s ease-out;
  5874. -moz-transition: -moz-transform 0.3s ease-out;
  5875. -o-transition: -o-transform 0.3s ease-out;
  5876. transition: transform 0.3s ease-out;
  5877. }
  5878. .modal.in .modal-dialog {
  5879. -webkit-transform: translate(0, 0);
  5880. -ms-transform: translate(0, 0);
  5881. -o-transform: translate(0, 0);
  5882. transform: translate(0, 0);
  5883. }
  5884. .modal-open .modal {
  5885. overflow-x: hidden;
  5886. overflow-y: auto;
  5887. }
  5888. .modal-dialog {
  5889. position: relative;
  5890. width: auto;
  5891. margin: 10px;
  5892. }
  5893. .modal-content {
  5894. position: relative;
  5895. background-color: #fff;
  5896. border: 1px solid #999;
  5897. border: 1px solid rgba(0, 0, 0, 0.2);
  5898. border-radius: 3px;
  5899. -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  5900. box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  5901. background-clip: padding-box;
  5902. outline: 0;
  5903. }
  5904. .modal-backdrop {
  5905. position: fixed;
  5906. top: 0;
  5907. right: 0;
  5908. bottom: 0;
  5909. left: 0;
  5910. z-index: 1040;
  5911. background-color: #000;
  5912. }
  5913. .modal-backdrop.fade {
  5914. opacity: 0;
  5915. filter: alpha(opacity=0);
  5916. }
  5917. .modal-backdrop.in {
  5918. opacity: 0.5;
  5919. filter: alpha(opacity=50);
  5920. }
  5921. .modal-header {
  5922. padding: 15px;
  5923. border-bottom: 1px solid #e5e5e5;
  5924. }
  5925. .modal-header .close {
  5926. margin-top: -2px;
  5927. }
  5928. .modal-title {
  5929. margin: 0;
  5930. line-height: 1.42857143;
  5931. }
  5932. .modal-body {
  5933. position: relative;
  5934. padding: 15px;
  5935. }
  5936. .modal-footer {
  5937. padding: 15px;
  5938. text-align: right;
  5939. border-top: 1px solid #e5e5e5;
  5940. }
  5941. .modal-footer .btn + .btn {
  5942. margin-left: 5px;
  5943. margin-bottom: 0;
  5944. }
  5945. .modal-footer .btn-group .btn + .btn {
  5946. margin-left: -1px;
  5947. }
  5948. .modal-footer .btn-block + .btn-block {
  5949. margin-left: 0;
  5950. }
  5951. .modal-scrollbar-measure {
  5952. position: absolute;
  5953. top: -9999px;
  5954. width: 50px;
  5955. height: 50px;
  5956. overflow: scroll;
  5957. }
  5958. @media (min-width: 768px) {
  5959. .modal-dialog {
  5960. width: 600px;
  5961. margin: 30px auto;
  5962. }
  5963. .modal-content {
  5964. -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  5965. box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  5966. }
  5967. .modal-sm {
  5968. width: 300px;
  5969. }
  5970. }
  5971. @media (min-width: 992px) {
  5972. .modal-lg {
  5973. width: 900px;
  5974. }
  5975. }
  5976. .tooltip {
  5977. position: absolute;
  5978. z-index: 1070;
  5979. display: block;
  5980. font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  5981. font-style: normal;
  5982. font-weight: normal;
  5983. letter-spacing: normal;
  5984. line-break: auto;
  5985. line-height: 1.42857143;
  5986. text-align: left;
  5987. text-align: start;
  5988. text-decoration: none;
  5989. text-shadow: none;
  5990. text-transform: none;
  5991. white-space: normal;
  5992. word-break: normal;
  5993. word-spacing: normal;
  5994. word-wrap: normal;
  5995. font-size: 12px;
  5996. opacity: 0;
  5997. filter: alpha(opacity=0);
  5998. }
  5999. .tooltip.in {
  6000. opacity: 0.9;
  6001. filter: alpha(opacity=90);
  6002. }
  6003. .tooltip.top {
  6004. margin-top: -3px;
  6005. padding: 5px 0;
  6006. }
  6007. .tooltip.right {
  6008. margin-left: 3px;
  6009. padding: 0 5px;
  6010. }
  6011. .tooltip.bottom {
  6012. margin-top: 3px;
  6013. padding: 5px 0;
  6014. }
  6015. .tooltip.left {
  6016. margin-left: -3px;
  6017. padding: 0 5px;
  6018. }
  6019. .tooltip-inner {
  6020. max-width: 200px;
  6021. padding: 3px 8px;
  6022. color: #fff;
  6023. text-align: center;
  6024. background-color: #000;
  6025. border-radius: 2px;
  6026. }
  6027. .tooltip-arrow {
  6028. position: absolute;
  6029. width: 0;
  6030. height: 0;
  6031. border-color: transparent;
  6032. border-style: solid;
  6033. }
  6034. .tooltip.top .tooltip-arrow {
  6035. bottom: 0;
  6036. left: 50%;
  6037. margin-left: -5px;
  6038. border-width: 5px 5px 0;
  6039. border-top-color: #000;
  6040. }
  6041. .tooltip.top-left .tooltip-arrow {
  6042. bottom: 0;
  6043. right: 5px;
  6044. margin-bottom: -5px;
  6045. border-width: 5px 5px 0;
  6046. border-top-color: #000;
  6047. }
  6048. .tooltip.top-right .tooltip-arrow {
  6049. bottom: 0;
  6050. left: 5px;
  6051. margin-bottom: -5px;
  6052. border-width: 5px 5px 0;
  6053. border-top-color: #000;
  6054. }
  6055. .tooltip.right .tooltip-arrow {
  6056. top: 50%;
  6057. left: 0;
  6058. margin-top: -5px;
  6059. border-width: 5px 5px 5px 0;
  6060. border-right-color: #000;
  6061. }
  6062. .tooltip.left .tooltip-arrow {
  6063. top: 50%;
  6064. right: 0;
  6065. margin-top: -5px;
  6066. border-width: 5px 0 5px 5px;
  6067. border-left-color: #000;
  6068. }
  6069. .tooltip.bottom .tooltip-arrow {
  6070. top: 0;
  6071. left: 50%;
  6072. margin-left: -5px;
  6073. border-width: 0 5px 5px;
  6074. border-bottom-color: #000;
  6075. }
  6076. .tooltip.bottom-left .tooltip-arrow {
  6077. top: 0;
  6078. right: 5px;
  6079. margin-top: -5px;
  6080. border-width: 0 5px 5px;
  6081. border-bottom-color: #000;
  6082. }
  6083. .tooltip.bottom-right .tooltip-arrow {
  6084. top: 0;
  6085. left: 5px;
  6086. margin-top: -5px;
  6087. border-width: 0 5px 5px;
  6088. border-bottom-color: #000;
  6089. }
  6090. .popover {
  6091. position: absolute;
  6092. top: 0;
  6093. left: 0;
  6094. z-index: 1060;
  6095. display: none;
  6096. max-width: 276px;
  6097. padding: 1px;
  6098. font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  6099. font-style: normal;
  6100. font-weight: normal;
  6101. letter-spacing: normal;
  6102. line-break: auto;
  6103. line-height: 1.42857143;
  6104. text-align: left;
  6105. text-align: start;
  6106. text-decoration: none;
  6107. text-shadow: none;
  6108. text-transform: none;
  6109. white-space: normal;
  6110. word-break: normal;
  6111. word-spacing: normal;
  6112. word-wrap: normal;
  6113. font-size: 13px;
  6114. background-color: #fff;
  6115. background-clip: padding-box;
  6116. border: 1px solid #ccc;
  6117. border: 1px solid rgba(0, 0, 0, 0.2);
  6118. border-radius: 3px;
  6119. -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  6120. box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  6121. }
  6122. .popover.top {
  6123. margin-top: -10px;
  6124. }
  6125. .popover.right {
  6126. margin-left: 10px;
  6127. }
  6128. .popover.bottom {
  6129. margin-top: 10px;
  6130. }
  6131. .popover.left {
  6132. margin-left: -10px;
  6133. }
  6134. .popover-title {
  6135. margin: 0;
  6136. padding: 8px 14px;
  6137. font-size: 13px;
  6138. background-color: #f7f7f7;
  6139. border-bottom: 1px solid #ebebeb;
  6140. border-radius: 2px 2px 0 0;
  6141. }
  6142. .popover-content {
  6143. padding: 9px 14px;
  6144. }
  6145. .popover > .arrow,
  6146. .popover > .arrow:after {
  6147. position: absolute;
  6148. display: block;
  6149. width: 0;
  6150. height: 0;
  6151. border-color: transparent;
  6152. border-style: solid;
  6153. }
  6154. .popover > .arrow {
  6155. border-width: 11px;
  6156. }
  6157. .popover > .arrow:after {
  6158. border-width: 10px;
  6159. content: "";
  6160. }
  6161. .popover.top > .arrow {
  6162. left: 50%;
  6163. margin-left: -11px;
  6164. border-bottom-width: 0;
  6165. border-top-color: #999999;
  6166. border-top-color: rgba(0, 0, 0, 0.25);
  6167. bottom: -11px;
  6168. }
  6169. .popover.top > .arrow:after {
  6170. content: " ";
  6171. bottom: 1px;
  6172. margin-left: -10px;
  6173. border-bottom-width: 0;
  6174. border-top-color: #fff;
  6175. }
  6176. .popover.right > .arrow {
  6177. top: 50%;
  6178. left: -11px;
  6179. margin-top: -11px;
  6180. border-left-width: 0;
  6181. border-right-color: #999999;
  6182. border-right-color: rgba(0, 0, 0, 0.25);
  6183. }
  6184. .popover.right > .arrow:after {
  6185. content: " ";
  6186. left: 1px;
  6187. bottom: -10px;
  6188. border-left-width: 0;
  6189. border-right-color: #fff;
  6190. }
  6191. .popover.bottom > .arrow {
  6192. left: 50%;
  6193. margin-left: -11px;
  6194. border-top-width: 0;
  6195. border-bottom-color: #999999;
  6196. border-bottom-color: rgba(0, 0, 0, 0.25);
  6197. top: -11px;
  6198. }
  6199. .popover.bottom > .arrow:after {
  6200. content: " ";
  6201. top: 1px;
  6202. margin-left: -10px;
  6203. border-top-width: 0;
  6204. border-bottom-color: #fff;
  6205. }
  6206. .popover.left > .arrow {
  6207. top: 50%;
  6208. right: -11px;
  6209. margin-top: -11px;
  6210. border-right-width: 0;
  6211. border-left-color: #999999;
  6212. border-left-color: rgba(0, 0, 0, 0.25);
  6213. }
  6214. .popover.left > .arrow:after {
  6215. content: " ";
  6216. right: 1px;
  6217. border-right-width: 0;
  6218. border-left-color: #fff;
  6219. bottom: -10px;
  6220. }
  6221. .carousel {
  6222. position: relative;
  6223. }
  6224. .carousel-inner {
  6225. position: relative;
  6226. overflow: hidden;
  6227. width: 100%;
  6228. }
  6229. .carousel-inner > .item {
  6230. display: none;
  6231. position: relative;
  6232. -webkit-transition: 0.6s ease-in-out left;
  6233. -o-transition: 0.6s ease-in-out left;
  6234. transition: 0.6s ease-in-out left;
  6235. }
  6236. .carousel-inner > .item > img,
  6237. .carousel-inner > .item > a > img {
  6238. line-height: 1;
  6239. }
  6240. @media all and (transform-3d), (-webkit-transform-3d) {
  6241. .carousel-inner > .item {
  6242. -webkit-transition: -webkit-transform 0.6s ease-in-out;
  6243. -moz-transition: -moz-transform 0.6s ease-in-out;
  6244. -o-transition: -o-transform 0.6s ease-in-out;
  6245. transition: transform 0.6s ease-in-out;
  6246. -webkit-backface-visibility: hidden;
  6247. -moz-backface-visibility: hidden;
  6248. backface-visibility: hidden;
  6249. -webkit-perspective: 1000px;
  6250. -moz-perspective: 1000px;
  6251. perspective: 1000px;
  6252. }
  6253. .carousel-inner > .item.next,
  6254. .carousel-inner > .item.active.right {
  6255. -webkit-transform: translate3d(100%, 0, 0);
  6256. transform: translate3d(100%, 0, 0);
  6257. left: 0;
  6258. }
  6259. .carousel-inner > .item.prev,
  6260. .carousel-inner > .item.active.left {
  6261. -webkit-transform: translate3d(-100%, 0, 0);
  6262. transform: translate3d(-100%, 0, 0);
  6263. left: 0;
  6264. }
  6265. .carousel-inner > .item.next.left,
  6266. .carousel-inner > .item.prev.right,
  6267. .carousel-inner > .item.active {
  6268. -webkit-transform: translate3d(0, 0, 0);
  6269. transform: translate3d(0, 0, 0);
  6270. left: 0;
  6271. }
  6272. }
  6273. .carousel-inner > .active,
  6274. .carousel-inner > .next,
  6275. .carousel-inner > .prev {
  6276. display: block;
  6277. }
  6278. .carousel-inner > .active {
  6279. left: 0;
  6280. }
  6281. .carousel-inner > .next,
  6282. .carousel-inner > .prev {
  6283. position: absolute;
  6284. top: 0;
  6285. width: 100%;
  6286. }
  6287. .carousel-inner > .next {
  6288. left: 100%;
  6289. }
  6290. .carousel-inner > .prev {
  6291. left: -100%;
  6292. }
  6293. .carousel-inner > .next.left,
  6294. .carousel-inner > .prev.right {
  6295. left: 0;
  6296. }
  6297. .carousel-inner > .active.left {
  6298. left: -100%;
  6299. }
  6300. .carousel-inner > .active.right {
  6301. left: 100%;
  6302. }
  6303. .carousel-control {
  6304. position: absolute;
  6305. top: 0;
  6306. left: 0;
  6307. bottom: 0;
  6308. width: 15%;
  6309. opacity: 0.5;
  6310. filter: alpha(opacity=50);
  6311. font-size: 20px;
  6312. color: #fff;
  6313. text-align: center;
  6314. text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  6315. background-color: rgba(0, 0, 0, 0);
  6316. }
  6317. .carousel-control.left {
  6318. background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  6319. background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  6320. background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  6321. background-repeat: repeat-x;
  6322. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
  6323. }
  6324. .carousel-control.right {
  6325. left: auto;
  6326. right: 0;
  6327. background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  6328. background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  6329. background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  6330. background-repeat: repeat-x;
  6331. filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
  6332. }
  6333. .carousel-control:hover,
  6334. .carousel-control:focus {
  6335. outline: 0;
  6336. color: #fff;
  6337. text-decoration: none;
  6338. opacity: 0.9;
  6339. filter: alpha(opacity=90);
  6340. }
  6341. .carousel-control .icon-prev,
  6342. .carousel-control .icon-next,
  6343. .carousel-control .glyphicon-chevron-left,
  6344. .carousel-control .glyphicon-chevron-right {
  6345. position: absolute;
  6346. top: 50%;
  6347. margin-top: -10px;
  6348. z-index: 5;
  6349. display: inline-block;
  6350. }
  6351. .carousel-control .icon-prev,
  6352. .carousel-control .glyphicon-chevron-left {
  6353. left: 50%;
  6354. margin-left: -10px;
  6355. }
  6356. .carousel-control .icon-next,
  6357. .carousel-control .glyphicon-chevron-right {
  6358. right: 50%;
  6359. margin-right: -10px;
  6360. }
  6361. .carousel-control .icon-prev,
  6362. .carousel-control .icon-next {
  6363. width: 20px;
  6364. height: 20px;
  6365. line-height: 1;
  6366. font-family: serif;
  6367. }
  6368. .carousel-control .icon-prev:before {
  6369. content: '\2039';
  6370. }
  6371. .carousel-control .icon-next:before {
  6372. content: '\203a';
  6373. }
  6374. .carousel-indicators {
  6375. position: absolute;
  6376. bottom: 10px;
  6377. left: 50%;
  6378. z-index: 15;
  6379. width: 60%;
  6380. margin-left: -30%;
  6381. padding-left: 0;
  6382. list-style: none;
  6383. text-align: center;
  6384. }
  6385. .carousel-indicators li {
  6386. display: inline-block;
  6387. width: 10px;
  6388. height: 10px;
  6389. margin: 1px;
  6390. text-indent: -999px;
  6391. border: 1px solid #fff;
  6392. border-radius: 10px;
  6393. cursor: pointer;
  6394. background-color: #000 \9;
  6395. background-color: rgba(0, 0, 0, 0);
  6396. }
  6397. .carousel-indicators .active {
  6398. margin: 0;
  6399. width: 12px;
  6400. height: 12px;
  6401. background-color: #fff;
  6402. }
  6403. .carousel-caption {
  6404. position: absolute;
  6405. left: 15%;
  6406. right: 15%;
  6407. bottom: 20px;
  6408. z-index: 10;
  6409. padding-top: 20px;
  6410. padding-bottom: 20px;
  6411. color: #fff;
  6412. text-align: center;
  6413. text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  6414. }
  6415. .carousel-caption .btn {
  6416. text-shadow: none;
  6417. }
  6418. @media screen and (min-width: 768px) {
  6419. .carousel-control .glyphicon-chevron-left,
  6420. .carousel-control .glyphicon-chevron-right,
  6421. .carousel-control .icon-prev,
  6422. .carousel-control .icon-next {
  6423. width: 30px;
  6424. height: 30px;
  6425. margin-top: -10px;
  6426. font-size: 30px;
  6427. }
  6428. .carousel-control .glyphicon-chevron-left,
  6429. .carousel-control .icon-prev {
  6430. margin-left: -10px;
  6431. }
  6432. .carousel-control .glyphicon-chevron-right,
  6433. .carousel-control .icon-next {
  6434. margin-right: -10px;
  6435. }
  6436. .carousel-caption {
  6437. left: 20%;
  6438. right: 20%;
  6439. padding-bottom: 30px;
  6440. }
  6441. .carousel-indicators {
  6442. bottom: 20px;
  6443. }
  6444. }
  6445. .clearfix:before,
  6446. .clearfix:after,
  6447. .dl-horizontal dd:before,
  6448. .dl-horizontal dd:after,
  6449. .container:before,
  6450. .container:after,
  6451. .container-fluid:before,
  6452. .container-fluid:after,
  6453. .row:before,
  6454. .row:after,
  6455. .form-horizontal .form-group:before,
  6456. .form-horizontal .form-group:after,
  6457. .btn-toolbar:before,
  6458. .btn-toolbar:after,
  6459. .btn-group-vertical > .btn-group:before,
  6460. .btn-group-vertical > .btn-group:after,
  6461. .nav:before,
  6462. .nav:after,
  6463. .navbar:before,
  6464. .navbar:after,
  6465. .navbar-header:before,
  6466. .navbar-header:after,
  6467. .navbar-collapse:before,
  6468. .navbar-collapse:after,
  6469. .pager:before,
  6470. .pager:after,
  6471. .panel-body:before,
  6472. .panel-body:after,
  6473. .modal-header:before,
  6474. .modal-header:after,
  6475. .modal-footer:before,
  6476. .modal-footer:after,
  6477. .item_buttons:before,
  6478. .item_buttons:after {
  6479. content: " ";
  6480. display: table;
  6481. }
  6482. .clearfix:after,
  6483. .dl-horizontal dd:after,
  6484. .container:after,
  6485. .container-fluid:after,
  6486. .row:after,
  6487. .form-horizontal .form-group:after,
  6488. .btn-toolbar:after,
  6489. .btn-group-vertical > .btn-group:after,
  6490. .nav:after,
  6491. .navbar:after,
  6492. .navbar-header:after,
  6493. .navbar-collapse:after,
  6494. .pager:after,
  6495. .panel-body:after,
  6496. .modal-header:after,
  6497. .modal-footer:after,
  6498. .item_buttons:after {
  6499. clear: both;
  6500. }
  6501. .center-block {
  6502. display: block;
  6503. margin-left: auto;
  6504. margin-right: auto;
  6505. }
  6506. .pull-right {
  6507. float: right !important;
  6508. }
  6509. .pull-left {
  6510. float: left !important;
  6511. }
  6512. .hide {
  6513. display: none !important;
  6514. }
  6515. .show {
  6516. display: block !important;
  6517. }
  6518. .invisible {
  6519. visibility: hidden;
  6520. }
  6521. .text-hide {
  6522. font: 0/0 a;
  6523. color: transparent;
  6524. text-shadow: none;
  6525. background-color: transparent;
  6526. border: 0;
  6527. }
  6528. .hidden {
  6529. display: none !important;
  6530. }
  6531. .affix {
  6532. position: fixed;
  6533. }
  6534. @-ms-viewport {
  6535. width: device-width;
  6536. }
  6537. .visible-xs,
  6538. .visible-sm,
  6539. .visible-md,
  6540. .visible-lg {
  6541. display: none !important;
  6542. }
  6543. .visible-xs-block,
  6544. .visible-xs-inline,
  6545. .visible-xs-inline-block,
  6546. .visible-sm-block,
  6547. .visible-sm-inline,
  6548. .visible-sm-inline-block,
  6549. .visible-md-block,
  6550. .visible-md-inline,
  6551. .visible-md-inline-block,
  6552. .visible-lg-block,
  6553. .visible-lg-inline,
  6554. .visible-lg-inline-block {
  6555. display: none !important;
  6556. }
  6557. @media (max-width: 767px) {
  6558. .visible-xs {
  6559. display: block !important;
  6560. }
  6561. table.visible-xs {
  6562. display: table !important;
  6563. }
  6564. tr.visible-xs {
  6565. display: table-row !important;
  6566. }
  6567. th.visible-xs,
  6568. td.visible-xs {
  6569. display: table-cell !important;
  6570. }
  6571. }
  6572. @media (max-width: 767px) {
  6573. .visible-xs-block {
  6574. display: block !important;
  6575. }
  6576. }
  6577. @media (max-width: 767px) {
  6578. .visible-xs-inline {
  6579. display: inline !important;
  6580. }
  6581. }
  6582. @media (max-width: 767px) {
  6583. .visible-xs-inline-block {
  6584. display: inline-block !important;
  6585. }
  6586. }
  6587. @media (min-width: 768px) and (max-width: 991px) {
  6588. .visible-sm {
  6589. display: block !important;
  6590. }
  6591. table.visible-sm {
  6592. display: table !important;
  6593. }
  6594. tr.visible-sm {
  6595. display: table-row !important;
  6596. }
  6597. th.visible-sm,
  6598. td.visible-sm {
  6599. display: table-cell !important;
  6600. }
  6601. }
  6602. @media (min-width: 768px) and (max-width: 991px) {
  6603. .visible-sm-block {
  6604. display: block !important;
  6605. }
  6606. }
  6607. @media (min-width: 768px) and (max-width: 991px) {
  6608. .visible-sm-inline {
  6609. display: inline !important;
  6610. }
  6611. }
  6612. @media (min-width: 768px) and (max-width: 991px) {
  6613. .visible-sm-inline-block {
  6614. display: inline-block !important;
  6615. }
  6616. }
  6617. @media (min-width: 992px) and (max-width: 1199px) {
  6618. .visible-md {
  6619. display: block !important;
  6620. }
  6621. table.visible-md {
  6622. display: table !important;
  6623. }
  6624. tr.visible-md {
  6625. display: table-row !important;
  6626. }
  6627. th.visible-md,
  6628. td.visible-md {
  6629. display: table-cell !important;
  6630. }
  6631. }
  6632. @media (min-width: 992px) and (max-width: 1199px) {
  6633. .visible-md-block {
  6634. display: block !important;
  6635. }
  6636. }
  6637. @media (min-width: 992px) and (max-width: 1199px) {
  6638. .visible-md-inline {
  6639. display: inline !important;
  6640. }
  6641. }
  6642. @media (min-width: 992px) and (max-width: 1199px) {
  6643. .visible-md-inline-block {
  6644. display: inline-block !important;
  6645. }
  6646. }
  6647. @media (min-width: 1200px) {
  6648. .visible-lg {
  6649. display: block !important;
  6650. }
  6651. table.visible-lg {
  6652. display: table !important;
  6653. }
  6654. tr.visible-lg {
  6655. display: table-row !important;
  6656. }
  6657. th.visible-lg,
  6658. td.visible-lg {
  6659. display: table-cell !important;
  6660. }
  6661. }
  6662. @media (min-width: 1200px) {
  6663. .visible-lg-block {
  6664. display: block !important;
  6665. }
  6666. }
  6667. @media (min-width: 1200px) {
  6668. .visible-lg-inline {
  6669. display: inline !important;
  6670. }
  6671. }
  6672. @media (min-width: 1200px) {
  6673. .visible-lg-inline-block {
  6674. display: inline-block !important;
  6675. }
  6676. }
  6677. @media (max-width: 767px) {
  6678. .hidden-xs {
  6679. display: none !important;
  6680. }
  6681. }
  6682. @media (min-width: 768px) and (max-width: 991px) {
  6683. .hidden-sm {
  6684. display: none !important;
  6685. }
  6686. }
  6687. @media (min-width: 992px) and (max-width: 1199px) {
  6688. .hidden-md {
  6689. display: none !important;
  6690. }
  6691. }
  6692. @media (min-width: 1200px) {
  6693. .hidden-lg {
  6694. display: none !important;
  6695. }
  6696. }
  6697. .visible-print {
  6698. display: none !important;
  6699. }
  6700. @media print {
  6701. .visible-print {
  6702. display: block !important;
  6703. }
  6704. table.visible-print {
  6705. display: table !important;
  6706. }
  6707. tr.visible-print {
  6708. display: table-row !important;
  6709. }
  6710. th.visible-print,
  6711. td.visible-print {
  6712. display: table-cell !important;
  6713. }
  6714. }
  6715. .visible-print-block {
  6716. display: none !important;
  6717. }
  6718. @media print {
  6719. .visible-print-block {
  6720. display: block !important;
  6721. }
  6722. }
  6723. .visible-print-inline {
  6724. display: none !important;
  6725. }
  6726. @media print {
  6727. .visible-print-inline {
  6728. display: inline !important;
  6729. }
  6730. }
  6731. .visible-print-inline-block {
  6732. display: none !important;
  6733. }
  6734. @media print {
  6735. .visible-print-inline-block {
  6736. display: inline-block !important;
  6737. }
  6738. }
  6739. @media print {
  6740. .hidden-print {
  6741. display: none !important;
  6742. }
  6743. }
  6744. /*!
  6745. *
  6746. * Font Awesome
  6747. *
  6748. */
  6749. /*!
  6750. * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
  6751. * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  6752. */
  6753. /* FONT PATH
  6754. * -------------------------- */
  6755. @font-face {
  6756. font-family: 'FontAwesome';
  6757. src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  6758. src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  6759. font-weight: normal;
  6760. font-style: normal;
  6761. }
  6762. .fa {
  6763. display: inline-block;
  6764. font: normal normal normal 14px/1 FontAwesome;
  6765. font-size: inherit;
  6766. text-rendering: auto;
  6767. -webkit-font-smoothing: antialiased;
  6768. -moz-osx-font-smoothing: grayscale;
  6769. }
  6770. /* makes the font 33% larger relative to the icon container */
  6771. .fa-lg {
  6772. font-size: 1.33333333em;
  6773. line-height: 0.75em;
  6774. vertical-align: -15%;
  6775. }
  6776. .fa-2x {
  6777. font-size: 2em;
  6778. }
  6779. .fa-3x {
  6780. font-size: 3em;
  6781. }
  6782. .fa-4x {
  6783. font-size: 4em;
  6784. }
  6785. .fa-5x {
  6786. font-size: 5em;
  6787. }
  6788. .fa-fw {
  6789. width: 1.28571429em;
  6790. text-align: center;
  6791. }
  6792. .fa-ul {
  6793. padding-left: 0;
  6794. margin-left: 2.14285714em;
  6795. list-style-type: none;
  6796. }
  6797. .fa-ul > li {
  6798. position: relative;
  6799. }
  6800. .fa-li {
  6801. position: absolute;
  6802. left: -2.14285714em;
  6803. width: 2.14285714em;
  6804. top: 0.14285714em;
  6805. text-align: center;
  6806. }
  6807. .fa-li.fa-lg {
  6808. left: -1.85714286em;
  6809. }
  6810. .fa-border {
  6811. padding: .2em .25em .15em;
  6812. border: solid 0.08em #eee;
  6813. border-radius: .1em;
  6814. }
  6815. .pull-right {
  6816. float: right;
  6817. }
  6818. .pull-left {
  6819. float: left;
  6820. }
  6821. .fa.pull-left {
  6822. margin-right: .3em;
  6823. }
  6824. .fa.pull-right {
  6825. margin-left: .3em;
  6826. }
  6827. .fa-spin {
  6828. -webkit-animation: fa-spin 2s infinite linear;
  6829. animation: fa-spin 2s infinite linear;
  6830. }
  6831. @-webkit-keyframes fa-spin {
  6832. 0% {
  6833. -webkit-transform: rotate(0deg);
  6834. transform: rotate(0deg);
  6835. }
  6836. 100% {
  6837. -webkit-transform: rotate(359deg);
  6838. transform: rotate(359deg);
  6839. }
  6840. }
  6841. @keyframes fa-spin {
  6842. 0% {
  6843. -webkit-transform: rotate(0deg);
  6844. transform: rotate(0deg);
  6845. }
  6846. 100% {
  6847. -webkit-transform: rotate(359deg);
  6848. transform: rotate(359deg);
  6849. }
  6850. }
  6851. .fa-rotate-90 {
  6852. filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  6853. -webkit-transform: rotate(90deg);
  6854. -ms-transform: rotate(90deg);
  6855. transform: rotate(90deg);
  6856. }
  6857. .fa-rotate-180 {
  6858. filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  6859. -webkit-transform: rotate(180deg);
  6860. -ms-transform: rotate(180deg);
  6861. transform: rotate(180deg);
  6862. }
  6863. .fa-rotate-270 {
  6864. filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  6865. -webkit-transform: rotate(270deg);
  6866. -ms-transform: rotate(270deg);
  6867. transform: rotate(270deg);
  6868. }
  6869. .fa-flip-horizontal {
  6870. filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  6871. -webkit-transform: scale(-1, 1);
  6872. -ms-transform: scale(-1, 1);
  6873. transform: scale(-1, 1);
  6874. }
  6875. .fa-flip-vertical {
  6876. filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  6877. -webkit-transform: scale(1, -1);
  6878. -ms-transform: scale(1, -1);
  6879. transform: scale(1, -1);
  6880. }
  6881. :root .fa-rotate-90,
  6882. :root .fa-rotate-180,
  6883. :root .fa-rotate-270,
  6884. :root .fa-flip-horizontal,
  6885. :root .fa-flip-vertical {
  6886. filter: none;
  6887. }
  6888. .fa-stack {
  6889. position: relative;
  6890. display: inline-block;
  6891. width: 2em;
  6892. height: 2em;
  6893. line-height: 2em;
  6894. vertical-align: middle;
  6895. }
  6896. .fa-stack-1x,
  6897. .fa-stack-2x {
  6898. position: absolute;
  6899. left: 0;
  6900. width: 100%;
  6901. text-align: center;
  6902. }
  6903. .fa-stack-1x {
  6904. line-height: inherit;
  6905. }
  6906. .fa-stack-2x {
  6907. font-size: 2em;
  6908. }
  6909. .fa-inverse {
  6910. color: #fff;
  6911. }
  6912. /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
  6913. readers do not read off random characters that represent icons */
  6914. .fa-glass:before {
  6915. content: "\f000";
  6916. }
  6917. .fa-music:before {
  6918. content: "\f001";
  6919. }
  6920. .fa-search:before {
  6921. content: "\f002";
  6922. }
  6923. .fa-envelope-o:before {
  6924. content: "\f003";
  6925. }
  6926. .fa-heart:before {
  6927. content: "\f004";
  6928. }
  6929. .fa-star:before {
  6930. content: "\f005";
  6931. }
  6932. .fa-star-o:before {
  6933. content: "\f006";
  6934. }
  6935. .fa-user:before {
  6936. content: "\f007";
  6937. }
  6938. .fa-film:before {
  6939. content: "\f008";
  6940. }
  6941. .fa-th-large:before {
  6942. content: "\f009";
  6943. }
  6944. .fa-th:before {
  6945. content: "\f00a";
  6946. }
  6947. .fa-th-list:before {
  6948. content: "\f00b";
  6949. }
  6950. .fa-check:before {
  6951. content: "\f00c";
  6952. }
  6953. .fa-remove:before,
  6954. .fa-close:before,
  6955. .fa-times:before {
  6956. content: "\f00d";
  6957. }
  6958. .fa-search-plus:before {
  6959. content: "\f00e";
  6960. }
  6961. .fa-search-minus:before {
  6962. content: "\f010";
  6963. }
  6964. .fa-power-off:before {
  6965. content: "\f011";
  6966. }
  6967. .fa-signal:before {
  6968. content: "\f012";
  6969. }
  6970. .fa-gear:before,
  6971. .fa-cog:before {
  6972. content: "\f013";
  6973. }
  6974. .fa-trash-o:before {
  6975. content: "\f014";
  6976. }
  6977. .fa-home:before {
  6978. content: "\f015";
  6979. }
  6980. .fa-file-o:before {
  6981. content: "\f016";
  6982. }
  6983. .fa-clock-o:before {
  6984. content: "\f017";
  6985. }
  6986. .fa-road:before {
  6987. content: "\f018";
  6988. }
  6989. .fa-download:before {
  6990. content: "\f019";
  6991. }
  6992. .fa-arrow-circle-o-down:before {
  6993. content: "\f01a";
  6994. }
  6995. .fa-arrow-circle-o-up:before {
  6996. content: "\f01b";
  6997. }
  6998. .fa-inbox:before {
  6999. content: "\f01c";
  7000. }
  7001. .fa-play-circle-o:before {
  7002. content: "\f01d";
  7003. }
  7004. .fa-rotate-right:before,
  7005. .fa-repeat:before {
  7006. content: "\f01e";
  7007. }
  7008. .fa-refresh:before {
  7009. content: "\f021";
  7010. }
  7011. .fa-list-alt:before {
  7012. content: "\f022";
  7013. }
  7014. .fa-lock:before {
  7015. content: "\f023";
  7016. }
  7017. .fa-flag:before {
  7018. content: "\f024";
  7019. }
  7020. .fa-headphones:before {
  7021. content: "\f025";
  7022. }
  7023. .fa-volume-off:before {
  7024. content: "\f026";
  7025. }
  7026. .fa-volume-down:before {
  7027. content: "\f027";
  7028. }
  7029. .fa-volume-up:before {
  7030. content: "\f028";
  7031. }
  7032. .fa-qrcode:before {
  7033. content: "\f029";
  7034. }
  7035. .fa-barcode:before {
  7036. content: "\f02a";
  7037. }
  7038. .fa-tag:before {
  7039. content: "\f02b";
  7040. }
  7041. .fa-tags:before {
  7042. content: "\f02c";
  7043. }
  7044. .fa-book:before {
  7045. content: "\f02d";
  7046. }
  7047. .fa-bookmark:before {
  7048. content: "\f02e";
  7049. }
  7050. .fa-print:before {
  7051. content: "\f02f";
  7052. }
  7053. .fa-camera:before {
  7054. content: "\f030";
  7055. }
  7056. .fa-font:before {
  7057. content: "\f031";
  7058. }
  7059. .fa-bold:before {
  7060. content: "\f032";
  7061. }
  7062. .fa-italic:before {
  7063. content: "\f033";
  7064. }
  7065. .fa-text-height:before {
  7066. content: "\f034";
  7067. }
  7068. .fa-text-width:before {
  7069. content: "\f035";
  7070. }
  7071. .fa-align-left:before {
  7072. content: "\f036";
  7073. }
  7074. .fa-align-center:before {
  7075. content: "\f037";
  7076. }
  7077. .fa-align-right:before {
  7078. content: "\f038";
  7079. }
  7080. .fa-align-justify:before {
  7081. content: "\f039";
  7082. }
  7083. .fa-list:before {
  7084. content: "\f03a";
  7085. }
  7086. .fa-dedent:before,
  7087. .fa-outdent:before {
  7088. content: "\f03b";
  7089. }
  7090. .fa-indent:before {
  7091. content: "\f03c";
  7092. }
  7093. .fa-video-camera:before {
  7094. content: "\f03d";
  7095. }
  7096. .fa-photo:before,
  7097. .fa-image:before,
  7098. .fa-picture-o:before {
  7099. content: "\f03e";
  7100. }
  7101. .fa-pencil:before {
  7102. content: "\f040";
  7103. }
  7104. .fa-map-marker:before {
  7105. content: "\f041";
  7106. }
  7107. .fa-adjust:before {
  7108. content: "\f042";
  7109. }
  7110. .fa-tint:before {
  7111. content: "\f043";
  7112. }
  7113. .fa-edit:before,
  7114. .fa-pencil-square-o:before {
  7115. content: "\f044";
  7116. }
  7117. .fa-share-square-o:before {
  7118. content: "\f045";
  7119. }
  7120. .fa-check-square-o:before {
  7121. content: "\f046";
  7122. }
  7123. .fa-arrows:before {
  7124. content: "\f047";
  7125. }
  7126. .fa-step-backward:before {
  7127. content: "\f048";
  7128. }
  7129. .fa-fast-backward:before {
  7130. content: "\f049";
  7131. }
  7132. .fa-backward:before {
  7133. content: "\f04a";
  7134. }
  7135. .fa-play:before {
  7136. content: "\f04b";
  7137. }
  7138. .fa-pause:before {
  7139. content: "\f04c";
  7140. }
  7141. .fa-stop:before {
  7142. content: "\f04d";
  7143. }
  7144. .fa-forward:before {
  7145. content: "\f04e";
  7146. }
  7147. .fa-fast-forward:before {
  7148. content: "\f050";
  7149. }
  7150. .fa-step-forward:before {
  7151. content: "\f051";
  7152. }
  7153. .fa-eject:before {
  7154. content: "\f052";
  7155. }
  7156. .fa-chevron-left:before {
  7157. content: "\f053";
  7158. }
  7159. .fa-chevron-right:before {
  7160. content: "\f054";
  7161. }
  7162. .fa-plus-circle:before {
  7163. content: "\f055";
  7164. }
  7165. .fa-minus-circle:before {
  7166. content: "\f056";
  7167. }
  7168. .fa-times-circle:before {
  7169. content: "\f057";
  7170. }
  7171. .fa-check-circle:before {
  7172. content: "\f058";
  7173. }
  7174. .fa-question-circle:before {
  7175. content: "\f059";
  7176. }
  7177. .fa-info-circle:before {
  7178. content: "\f05a";
  7179. }
  7180. .fa-crosshairs:before {
  7181. content: "\f05b";
  7182. }
  7183. .fa-times-circle-o:before {
  7184. content: "\f05c";
  7185. }
  7186. .fa-check-circle-o:before {
  7187. content: "\f05d";
  7188. }
  7189. .fa-ban:before {
  7190. content: "\f05e";
  7191. }
  7192. .fa-arrow-left:before {
  7193. content: "\f060";
  7194. }
  7195. .fa-arrow-right:before {
  7196. content: "\f061";
  7197. }
  7198. .fa-arrow-up:before {
  7199. content: "\f062";
  7200. }
  7201. .fa-arrow-down:before {
  7202. content: "\f063";
  7203. }
  7204. .fa-mail-forward:before,
  7205. .fa-share:before {
  7206. content: "\f064";
  7207. }
  7208. .fa-expand:before {
  7209. content: "\f065";
  7210. }
  7211. .fa-compress:before {
  7212. content: "\f066";
  7213. }
  7214. .fa-plus:before {
  7215. content: "\f067";
  7216. }
  7217. .fa-minus:before {
  7218. content: "\f068";
  7219. }
  7220. .fa-asterisk:before {
  7221. content: "\f069";
  7222. }
  7223. .fa-exclamation-circle:before {
  7224. content: "\f06a";
  7225. }
  7226. .fa-gift:before {
  7227. content: "\f06b";
  7228. }
  7229. .fa-leaf:before {
  7230. content: "\f06c";
  7231. }
  7232. .fa-fire:before {
  7233. content: "\f06d";
  7234. }
  7235. .fa-eye:before {
  7236. content: "\f06e";
  7237. }
  7238. .fa-eye-slash:before {
  7239. content: "\f070";
  7240. }
  7241. .fa-warning:before,
  7242. .fa-exclamation-triangle:before {
  7243. content: "\f071";
  7244. }
  7245. .fa-plane:before {
  7246. content: "\f072";
  7247. }
  7248. .fa-calendar:before {
  7249. content: "\f073";
  7250. }
  7251. .fa-random:before {
  7252. content: "\f074";
  7253. }
  7254. .fa-comment:before {
  7255. content: "\f075";
  7256. }
  7257. .fa-magnet:before {
  7258. content: "\f076";
  7259. }
  7260. .fa-chevron-up:before {
  7261. content: "\f077";
  7262. }
  7263. .fa-chevron-down:before {
  7264. content: "\f078";
  7265. }
  7266. .fa-retweet:before {
  7267. content: "\f079";
  7268. }
  7269. .fa-shopping-cart:before {
  7270. content: "\f07a";
  7271. }
  7272. .fa-folder:before {
  7273. content: "\f07b";
  7274. }
  7275. .fa-folder-open:before {
  7276. content: "\f07c";
  7277. }
  7278. .fa-arrows-v:before {
  7279. content: "\f07d";
  7280. }
  7281. .fa-arrows-h:before {
  7282. content: "\f07e";
  7283. }
  7284. .fa-bar-chart-o:before,
  7285. .fa-bar-chart:before {
  7286. content: "\f080";
  7287. }
  7288. .fa-twitter-square:before {
  7289. content: "\f081";
  7290. }
  7291. .fa-facebook-square:before {
  7292. content: "\f082";
  7293. }
  7294. .fa-camera-retro:before {
  7295. content: "\f083";
  7296. }
  7297. .fa-key:before {
  7298. content: "\f084";
  7299. }
  7300. .fa-gears:before,
  7301. .fa-cogs:before {
  7302. content: "\f085";
  7303. }
  7304. .fa-comments:before {
  7305. content: "\f086";
  7306. }
  7307. .fa-thumbs-o-up:before {
  7308. content: "\f087";
  7309. }
  7310. .fa-thumbs-o-down:before {
  7311. content: "\f088";
  7312. }
  7313. .fa-star-half:before {
  7314. content: "\f089";
  7315. }
  7316. .fa-heart-o:before {
  7317. content: "\f08a";
  7318. }
  7319. .fa-sign-out:before {
  7320. content: "\f08b";
  7321. }
  7322. .fa-linkedin-square:before {
  7323. content: "\f08c";
  7324. }
  7325. .fa-thumb-tack:before {
  7326. content: "\f08d";
  7327. }
  7328. .fa-external-link:before {
  7329. content: "\f08e";
  7330. }
  7331. .fa-sign-in:before {
  7332. content: "\f090";
  7333. }
  7334. .fa-trophy:before {
  7335. content: "\f091";
  7336. }
  7337. .fa-github-square:before {
  7338. content: "\f092";
  7339. }
  7340. .fa-upload:before {
  7341. content: "\f093";
  7342. }
  7343. .fa-lemon-o:before {
  7344. content: "\f094";
  7345. }
  7346. .fa-phone:before {
  7347. content: "\f095";
  7348. }
  7349. .fa-square-o:before {
  7350. content: "\f096";
  7351. }
  7352. .fa-bookmark-o:before {
  7353. content: "\f097";
  7354. }
  7355. .fa-phone-square:before {
  7356. content: "\f098";
  7357. }
  7358. .fa-twitter:before {
  7359. content: "\f099";
  7360. }
  7361. .fa-facebook:before {
  7362. content: "\f09a";
  7363. }
  7364. .fa-github:before {
  7365. content: "\f09b";
  7366. }
  7367. .fa-unlock:before {
  7368. content: "\f09c";
  7369. }
  7370. .fa-credit-card:before {
  7371. content: "\f09d";
  7372. }
  7373. .fa-rss:before {
  7374. content: "\f09e";
  7375. }
  7376. .fa-hdd-o:before {
  7377. content: "\f0a0";
  7378. }
  7379. .fa-bullhorn:before {
  7380. content: "\f0a1";
  7381. }
  7382. .fa-bell:before {
  7383. content: "\f0f3";
  7384. }
  7385. .fa-certificate:before {
  7386. content: "\f0a3";
  7387. }
  7388. .fa-hand-o-right:before {
  7389. content: "\f0a4";
  7390. }
  7391. .fa-hand-o-left:before {
  7392. content: "\f0a5";
  7393. }
  7394. .fa-hand-o-up:before {
  7395. content: "\f0a6";
  7396. }
  7397. .fa-hand-o-down:before {
  7398. content: "\f0a7";
  7399. }
  7400. .fa-arrow-circle-left:before {
  7401. content: "\f0a8";
  7402. }
  7403. .fa-arrow-circle-right:before {
  7404. content: "\f0a9";
  7405. }
  7406. .fa-arrow-circle-up:before {
  7407. content: "\f0aa";
  7408. }
  7409. .fa-arrow-circle-down:before {
  7410. content: "\f0ab";
  7411. }
  7412. .fa-globe:before {
  7413. content: "\f0ac";
  7414. }
  7415. .fa-wrench:before {
  7416. content: "\f0ad";
  7417. }
  7418. .fa-tasks:before {
  7419. content: "\f0ae";
  7420. }
  7421. .fa-filter:before {
  7422. content: "\f0b0";
  7423. }
  7424. .fa-briefcase:before {
  7425. content: "\f0b1";
  7426. }
  7427. .fa-arrows-alt:before {
  7428. content: "\f0b2";
  7429. }
  7430. .fa-group:before,
  7431. .fa-users:before {
  7432. content: "\f0c0";
  7433. }
  7434. .fa-chain:before,
  7435. .fa-link:before {
  7436. content: "\f0c1";
  7437. }
  7438. .fa-cloud:before {
  7439. content: "\f0c2";
  7440. }
  7441. .fa-flask:before {
  7442. content: "\f0c3";
  7443. }
  7444. .fa-cut:before,
  7445. .fa-scissors:before {
  7446. content: "\f0c4";
  7447. }
  7448. .fa-copy:before,
  7449. .fa-files-o:before {
  7450. content: "\f0c5";
  7451. }
  7452. .fa-paperclip:before {
  7453. content: "\f0c6";
  7454. }
  7455. .fa-save:before,
  7456. .fa-floppy-o:before {
  7457. content: "\f0c7";
  7458. }
  7459. .fa-square:before {
  7460. content: "\f0c8";
  7461. }
  7462. .fa-navicon:before,
  7463. .fa-reorder:before,
  7464. .fa-bars:before {
  7465. content: "\f0c9";
  7466. }
  7467. .fa-list-ul:before {
  7468. content: "\f0ca";
  7469. }
  7470. .fa-list-ol:before {
  7471. content: "\f0cb";
  7472. }
  7473. .fa-strikethrough:before {
  7474. content: "\f0cc";
  7475. }
  7476. .fa-underline:before {
  7477. content: "\f0cd";
  7478. }
  7479. .fa-table:before {
  7480. content: "\f0ce";
  7481. }
  7482. .fa-magic:before {
  7483. content: "\f0d0";
  7484. }
  7485. .fa-truck:before {
  7486. content: "\f0d1";
  7487. }
  7488. .fa-pinterest:before {
  7489. content: "\f0d2";
  7490. }
  7491. .fa-pinterest-square:before {
  7492. content: "\f0d3";
  7493. }
  7494. .fa-google-plus-square:before {
  7495. content: "\f0d4";
  7496. }
  7497. .fa-google-plus:before {
  7498. content: "\f0d5";
  7499. }
  7500. .fa-money:before {
  7501. content: "\f0d6";
  7502. }
  7503. .fa-caret-down:before {
  7504. content: "\f0d7";
  7505. }
  7506. .fa-caret-up:before {
  7507. content: "\f0d8";
  7508. }
  7509. .fa-caret-left:before {
  7510. content: "\f0d9";
  7511. }
  7512. .fa-caret-right:before {
  7513. content: "\f0da";
  7514. }
  7515. .fa-columns:before {
  7516. content: "\f0db";
  7517. }
  7518. .fa-unsorted:before,
  7519. .fa-sort:before {
  7520. content: "\f0dc";
  7521. }
  7522. .fa-sort-down:before,
  7523. .fa-sort-desc:before {
  7524. content: "\f0dd";
  7525. }
  7526. .fa-sort-up:before,
  7527. .fa-sort-asc:before {
  7528. content: "\f0de";
  7529. }
  7530. .fa-envelope:before {
  7531. content: "\f0e0";
  7532. }
  7533. .fa-linkedin:before {
  7534. content: "\f0e1";
  7535. }
  7536. .fa-rotate-left:before,
  7537. .fa-undo:before {
  7538. content: "\f0e2";
  7539. }
  7540. .fa-legal:before,
  7541. .fa-gavel:before {
  7542. content: "\f0e3";
  7543. }
  7544. .fa-dashboard:before,
  7545. .fa-tachometer:before {
  7546. content: "\f0e4";
  7547. }
  7548. .fa-comment-o:before {
  7549. content: "\f0e5";
  7550. }
  7551. .fa-comments-o:before {
  7552. content: "\f0e6";
  7553. }
  7554. .fa-flash:before,
  7555. .fa-bolt:before {
  7556. content: "\f0e7";
  7557. }
  7558. .fa-sitemap:before {
  7559. content: "\f0e8";
  7560. }
  7561. .fa-umbrella:before {
  7562. content: "\f0e9";
  7563. }
  7564. .fa-paste:before,
  7565. .fa-clipboard:before {
  7566. content: "\f0ea";
  7567. }
  7568. .fa-lightbulb-o:before {
  7569. content: "\f0eb";
  7570. }
  7571. .fa-exchange:before {
  7572. content: "\f0ec";
  7573. }
  7574. .fa-cloud-download:before {
  7575. content: "\f0ed";
  7576. }
  7577. .fa-cloud-upload:before {
  7578. content: "\f0ee";
  7579. }
  7580. .fa-user-md:before {
  7581. content: "\f0f0";
  7582. }
  7583. .fa-stethoscope:before {
  7584. content: "\f0f1";
  7585. }
  7586. .fa-suitcase:before {
  7587. content: "\f0f2";
  7588. }
  7589. .fa-bell-o:before {
  7590. content: "\f0a2";
  7591. }
  7592. .fa-coffee:before {
  7593. content: "\f0f4";
  7594. }
  7595. .fa-cutlery:before {
  7596. content: "\f0f5";
  7597. }
  7598. .fa-file-text-o:before {
  7599. content: "\f0f6";
  7600. }
  7601. .fa-building-o:before {
  7602. content: "\f0f7";
  7603. }
  7604. .fa-hospital-o:before {
  7605. content: "\f0f8";
  7606. }
  7607. .fa-ambulance:before {
  7608. content: "\f0f9";
  7609. }
  7610. .fa-medkit:before {
  7611. content: "\f0fa";
  7612. }
  7613. .fa-fighter-jet:before {
  7614. content: "\f0fb";
  7615. }
  7616. .fa-beer:before {
  7617. content: "\f0fc";
  7618. }
  7619. .fa-h-square:before {
  7620. content: "\f0fd";
  7621. }
  7622. .fa-plus-square:before {
  7623. content: "\f0fe";
  7624. }
  7625. .fa-angle-double-left:before {
  7626. content: "\f100";
  7627. }
  7628. .fa-angle-double-right:before {
  7629. content: "\f101";
  7630. }
  7631. .fa-angle-double-up:before {
  7632. content: "\f102";
  7633. }
  7634. .fa-angle-double-down:before {
  7635. content: "\f103";
  7636. }
  7637. .fa-angle-left:before {
  7638. content: "\f104";
  7639. }
  7640. .fa-angle-right:before {
  7641. content: "\f105";
  7642. }
  7643. .fa-angle-up:before {
  7644. content: "\f106";
  7645. }
  7646. .fa-angle-down:before {
  7647. content: "\f107";
  7648. }
  7649. .fa-desktop:before {
  7650. content: "\f108";
  7651. }
  7652. .fa-laptop:before {
  7653. content: "\f109";
  7654. }
  7655. .fa-tablet:before {
  7656. content: "\f10a";
  7657. }
  7658. .fa-mobile-phone:before,
  7659. .fa-mobile:before {
  7660. content: "\f10b";
  7661. }
  7662. .fa-circle-o:before {
  7663. content: "\f10c";
  7664. }
  7665. .fa-quote-left:before {
  7666. content: "\f10d";
  7667. }
  7668. .fa-quote-right:before {
  7669. content: "\f10e";
  7670. }
  7671. .fa-spinner:before {
  7672. content: "\f110";
  7673. }
  7674. .fa-circle:before {
  7675. content: "\f111";
  7676. }
  7677. .fa-mail-reply:before,
  7678. .fa-reply:before {
  7679. content: "\f112";
  7680. }
  7681. .fa-github-alt:before {
  7682. content: "\f113";
  7683. }
  7684. .fa-folder-o:before {
  7685. content: "\f114";
  7686. }
  7687. .fa-folder-open-o:before {
  7688. content: "\f115";
  7689. }
  7690. .fa-smile-o:before {
  7691. content: "\f118";
  7692. }
  7693. .fa-frown-o:before {
  7694. content: "\f119";
  7695. }
  7696. .fa-meh-o:before {
  7697. content: "\f11a";
  7698. }
  7699. .fa-gamepad:before {
  7700. content: "\f11b";
  7701. }
  7702. .fa-keyboard-o:before {
  7703. content: "\f11c";
  7704. }
  7705. .fa-flag-o:before {
  7706. content: "\f11d";
  7707. }
  7708. .fa-flag-checkered:before {
  7709. content: "\f11e";
  7710. }
  7711. .fa-terminal:before {
  7712. content: "\f120";
  7713. }
  7714. .fa-code:before {
  7715. content: "\f121";
  7716. }
  7717. .fa-mail-reply-all:before,
  7718. .fa-reply-all:before {
  7719. content: "\f122";
  7720. }
  7721. .fa-star-half-empty:before,
  7722. .fa-star-half-full:before,
  7723. .fa-star-half-o:before {
  7724. content: "\f123";
  7725. }
  7726. .fa-location-arrow:before {
  7727. content: "\f124";
  7728. }
  7729. .fa-crop:before {
  7730. content: "\f125";
  7731. }
  7732. .fa-code-fork:before {
  7733. content: "\f126";
  7734. }
  7735. .fa-unlink:before,
  7736. .fa-chain-broken:before {
  7737. content: "\f127";
  7738. }
  7739. .fa-question:before {
  7740. content: "\f128";
  7741. }
  7742. .fa-info:before {
  7743. content: "\f129";
  7744. }
  7745. .fa-exclamation:before {
  7746. content: "\f12a";
  7747. }
  7748. .fa-superscript:before {
  7749. content: "\f12b";
  7750. }
  7751. .fa-subscript:before {
  7752. content: "\f12c";
  7753. }
  7754. .fa-eraser:before {
  7755. content: "\f12d";
  7756. }
  7757. .fa-puzzle-piece:before {
  7758. content: "\f12e";
  7759. }
  7760. .fa-microphone:before {
  7761. content: "\f130";
  7762. }
  7763. .fa-microphone-slash:before {
  7764. content: "\f131";
  7765. }
  7766. .fa-shield:before {
  7767. content: "\f132";
  7768. }
  7769. .fa-calendar-o:before {
  7770. content: "\f133";
  7771. }
  7772. .fa-fire-extinguisher:before {
  7773. content: "\f134";
  7774. }
  7775. .fa-rocket:before {
  7776. content: "\f135";
  7777. }
  7778. .fa-maxcdn:before {
  7779. content: "\f136";
  7780. }
  7781. .fa-chevron-circle-left:before {
  7782. content: "\f137";
  7783. }
  7784. .fa-chevron-circle-right:before {
  7785. content: "\f138";
  7786. }
  7787. .fa-chevron-circle-up:before {
  7788. content: "\f139";
  7789. }
  7790. .fa-chevron-circle-down:before {
  7791. content: "\f13a";
  7792. }
  7793. .fa-html5:before {
  7794. content: "\f13b";
  7795. }
  7796. .fa-css3:before {
  7797. content: "\f13c";
  7798. }
  7799. .fa-anchor:before {
  7800. content: "\f13d";
  7801. }
  7802. .fa-unlock-alt:before {
  7803. content: "\f13e";
  7804. }
  7805. .fa-bullseye:before {
  7806. content: "\f140";
  7807. }
  7808. .fa-ellipsis-h:before {
  7809. content: "\f141";
  7810. }
  7811. .fa-ellipsis-v:before {
  7812. content: "\f142";
  7813. }
  7814. .fa-rss-square:before {
  7815. content: "\f143";
  7816. }
  7817. .fa-play-circle:before {
  7818. content: "\f144";
  7819. }
  7820. .fa-ticket:before {
  7821. content: "\f145";
  7822. }
  7823. .fa-minus-square:before {
  7824. content: "\f146";
  7825. }
  7826. .fa-minus-square-o:before {
  7827. content: "\f147";
  7828. }
  7829. .fa-level-up:before {
  7830. content: "\f148";
  7831. }
  7832. .fa-level-down:before {
  7833. content: "\f149";
  7834. }
  7835. .fa-check-square:before {
  7836. content: "\f14a";
  7837. }
  7838. .fa-pencil-square:before {
  7839. content: "\f14b";
  7840. }
  7841. .fa-external-link-square:before {
  7842. content: "\f14c";
  7843. }
  7844. .fa-share-square:before {
  7845. content: "\f14d";
  7846. }
  7847. .fa-compass:before {
  7848. content: "\f14e";
  7849. }
  7850. .fa-toggle-down:before,
  7851. .fa-caret-square-o-down:before {
  7852. content: "\f150";
  7853. }
  7854. .fa-toggle-up:before,
  7855. .fa-caret-square-o-up:before {
  7856. content: "\f151";
  7857. }
  7858. .fa-toggle-right:before,
  7859. .fa-caret-square-o-right:before {
  7860. content: "\f152";
  7861. }
  7862. .fa-euro:before,
  7863. .fa-eur:before {
  7864. content: "\f153";
  7865. }
  7866. .fa-gbp:before {
  7867. content: "\f154";
  7868. }
  7869. .fa-dollar:before,
  7870. .fa-usd:before {
  7871. content: "\f155";
  7872. }
  7873. .fa-rupee:before,
  7874. .fa-inr:before {
  7875. content: "\f156";
  7876. }
  7877. .fa-cny:before,
  7878. .fa-rmb:before,
  7879. .fa-yen:before,
  7880. .fa-jpy:before {
  7881. content: "\f157";
  7882. }
  7883. .fa-ruble:before,
  7884. .fa-rouble:before,
  7885. .fa-rub:before {
  7886. content: "\f158";
  7887. }
  7888. .fa-won:before,
  7889. .fa-krw:before {
  7890. content: "\f159";
  7891. }
  7892. .fa-bitcoin:before,
  7893. .fa-btc:before {
  7894. content: "\f15a";
  7895. }
  7896. .fa-file:before {
  7897. content: "\f15b";
  7898. }
  7899. .fa-file-text:before {
  7900. content: "\f15c";
  7901. }
  7902. .fa-sort-alpha-asc:before {
  7903. content: "\f15d";
  7904. }
  7905. .fa-sort-alpha-desc:before {
  7906. content: "\f15e";
  7907. }
  7908. .fa-sort-amount-asc:before {
  7909. content: "\f160";
  7910. }
  7911. .fa-sort-amount-desc:before {
  7912. content: "\f161";
  7913. }
  7914. .fa-sort-numeric-asc:before {
  7915. content: "\f162";
  7916. }
  7917. .fa-sort-numeric-desc:before {
  7918. content: "\f163";
  7919. }
  7920. .fa-thumbs-up:before {
  7921. content: "\f164";
  7922. }
  7923. .fa-thumbs-down:before {
  7924. content: "\f165";
  7925. }
  7926. .fa-youtube-square:before {
  7927. content: "\f166";
  7928. }
  7929. .fa-youtube:before {
  7930. content: "\f167";
  7931. }
  7932. .fa-xing:before {
  7933. content: "\f168";
  7934. }
  7935. .fa-xing-square:before {
  7936. content: "\f169";
  7937. }
  7938. .fa-youtube-play:before {
  7939. content: "\f16a";
  7940. }
  7941. .fa-dropbox:before {
  7942. content: "\f16b";
  7943. }
  7944. .fa-stack-overflow:before {
  7945. content: "\f16c";
  7946. }
  7947. .fa-instagram:before {
  7948. content: "\f16d";
  7949. }
  7950. .fa-flickr:before {
  7951. content: "\f16e";
  7952. }
  7953. .fa-adn:before {
  7954. content: "\f170";
  7955. }
  7956. .fa-bitbucket:before {
  7957. content: "\f171";
  7958. }
  7959. .fa-bitbucket-square:before {
  7960. content: "\f172";
  7961. }
  7962. .fa-tumblr:before {
  7963. content: "\f173";
  7964. }
  7965. .fa-tumblr-square:before {
  7966. content: "\f174";
  7967. }
  7968. .fa-long-arrow-down:before {
  7969. content: "\f175";
  7970. }
  7971. .fa-long-arrow-up:before {
  7972. content: "\f176";
  7973. }
  7974. .fa-long-arrow-left:before {
  7975. content: "\f177";
  7976. }
  7977. .fa-long-arrow-right:before {
  7978. content: "\f178";
  7979. }
  7980. .fa-apple:before {
  7981. content: "\f179";
  7982. }
  7983. .fa-windows:before {
  7984. content: "\f17a";
  7985. }
  7986. .fa-android:before {
  7987. content: "\f17b";
  7988. }
  7989. .fa-linux:before {
  7990. content: "\f17c";
  7991. }
  7992. .fa-dribbble:before {
  7993. content: "\f17d";
  7994. }
  7995. .fa-skype:before {
  7996. content: "\f17e";
  7997. }
  7998. .fa-foursquare:before {
  7999. content: "\f180";
  8000. }
  8001. .fa-trello:before {
  8002. content: "\f181";
  8003. }
  8004. .fa-female:before {
  8005. content: "\f182";
  8006. }
  8007. .fa-male:before {
  8008. content: "\f183";
  8009. }
  8010. .fa-gittip:before {
  8011. content: "\f184";
  8012. }
  8013. .fa-sun-o:before {
  8014. content: "\f185";
  8015. }
  8016. .fa-moon-o:before {
  8017. content: "\f186";
  8018. }
  8019. .fa-archive:before {
  8020. content: "\f187";
  8021. }
  8022. .fa-bug:before {
  8023. content: "\f188";
  8024. }
  8025. .fa-vk:before {
  8026. content: "\f189";
  8027. }
  8028. .fa-weibo:before {
  8029. content: "\f18a";
  8030. }
  8031. .fa-renren:before {
  8032. content: "\f18b";
  8033. }
  8034. .fa-pagelines:before {
  8035. content: "\f18c";
  8036. }
  8037. .fa-stack-exchange:before {
  8038. content: "\f18d";
  8039. }
  8040. .fa-arrow-circle-o-right:before {
  8041. content: "\f18e";
  8042. }
  8043. .fa-arrow-circle-o-left:before {
  8044. content: "\f190";
  8045. }
  8046. .fa-toggle-left:before,
  8047. .fa-caret-square-o-left:before {
  8048. content: "\f191";
  8049. }
  8050. .fa-dot-circle-o:before {
  8051. content: "\f192";
  8052. }
  8053. .fa-wheelchair:before {
  8054. content: "\f193";
  8055. }
  8056. .fa-vimeo-square:before {
  8057. content: "\f194";
  8058. }
  8059. .fa-turkish-lira:before,
  8060. .fa-try:before {
  8061. content: "\f195";
  8062. }
  8063. .fa-plus-square-o:before {
  8064. content: "\f196";
  8065. }
  8066. .fa-space-shuttle:before {
  8067. content: "\f197";
  8068. }
  8069. .fa-slack:before {
  8070. content: "\f198";
  8071. }
  8072. .fa-envelope-square:before {
  8073. content: "\f199";
  8074. }
  8075. .fa-wordpress:before {
  8076. content: "\f19a";
  8077. }
  8078. .fa-openid:before {
  8079. content: "\f19b";
  8080. }
  8081. .fa-institution:before,
  8082. .fa-bank:before,
  8083. .fa-university:before {
  8084. content: "\f19c";
  8085. }
  8086. .fa-mortar-board:before,
  8087. .fa-graduation-cap:before {
  8088. content: "\f19d";
  8089. }
  8090. .fa-yahoo:before {
  8091. content: "\f19e";
  8092. }
  8093. .fa-google:before {
  8094. content: "\f1a0";
  8095. }
  8096. .fa-reddit:before {
  8097. content: "\f1a1";
  8098. }
  8099. .fa-reddit-square:before {
  8100. content: "\f1a2";
  8101. }
  8102. .fa-stumbleupon-circle:before {
  8103. content: "\f1a3";
  8104. }
  8105. .fa-stumbleupon:before {
  8106. content: "\f1a4";
  8107. }
  8108. .fa-delicious:before {
  8109. content: "\f1a5";
  8110. }
  8111. .fa-digg:before {
  8112. content: "\f1a6";
  8113. }
  8114. .fa-pied-piper:before {
  8115. content: "\f1a7";
  8116. }
  8117. .fa-pied-piper-alt:before {
  8118. content: "\f1a8";
  8119. }
  8120. .fa-drupal:before {
  8121. content: "\f1a9";
  8122. }
  8123. .fa-joomla:before {
  8124. content: "\f1aa";
  8125. }
  8126. .fa-language:before {
  8127. content: "\f1ab";
  8128. }
  8129. .fa-fax:before {
  8130. content: "\f1ac";
  8131. }
  8132. .fa-building:before {
  8133. content: "\f1ad";
  8134. }
  8135. .fa-child:before {
  8136. content: "\f1ae";
  8137. }
  8138. .fa-paw:before {
  8139. content: "\f1b0";
  8140. }
  8141. .fa-spoon:before {
  8142. content: "\f1b1";
  8143. }
  8144. .fa-cube:before {
  8145. content: "\f1b2";
  8146. }
  8147. .fa-cubes:before {
  8148. content: "\f1b3";
  8149. }
  8150. .fa-behance:before {
  8151. content: "\f1b4";
  8152. }
  8153. .fa-behance-square:before {
  8154. content: "\f1b5";
  8155. }
  8156. .fa-steam:before {
  8157. content: "\f1b6";
  8158. }
  8159. .fa-steam-square:before {
  8160. content: "\f1b7";
  8161. }
  8162. .fa-recycle:before {
  8163. content: "\f1b8";
  8164. }
  8165. .fa-automobile:before,
  8166. .fa-car:before {
  8167. content: "\f1b9";
  8168. }
  8169. .fa-cab:before,
  8170. .fa-taxi:before {
  8171. content: "\f1ba";
  8172. }
  8173. .fa-tree:before {
  8174. content: "\f1bb";
  8175. }
  8176. .fa-spotify:before {
  8177. content: "\f1bc";
  8178. }
  8179. .fa-deviantart:before {
  8180. content: "\f1bd";
  8181. }
  8182. .fa-soundcloud:before {
  8183. content: "\f1be";
  8184. }
  8185. .fa-database:before {
  8186. content: "\f1c0";
  8187. }
  8188. .fa-file-pdf-o:before {
  8189. content: "\f1c1";
  8190. }
  8191. .fa-file-word-o:before {
  8192. content: "\f1c2";
  8193. }
  8194. .fa-file-excel-o:before {
  8195. content: "\f1c3";
  8196. }
  8197. .fa-file-powerpoint-o:before {
  8198. content: "\f1c4";
  8199. }
  8200. .fa-file-photo-o:before,
  8201. .fa-file-picture-o:before,
  8202. .fa-file-image-o:before {
  8203. content: "\f1c5";
  8204. }
  8205. .fa-file-zip-o:before,
  8206. .fa-file-archive-o:before {
  8207. content: "\f1c6";
  8208. }
  8209. .fa-file-sound-o:before,
  8210. .fa-file-audio-o:before {
  8211. content: "\f1c7";
  8212. }
  8213. .fa-file-movie-o:before,
  8214. .fa-file-video-o:before {
  8215. content: "\f1c8";
  8216. }
  8217. .fa-file-code-o:before {
  8218. content: "\f1c9";
  8219. }
  8220. .fa-vine:before {
  8221. content: "\f1ca";
  8222. }
  8223. .fa-codepen:before {
  8224. content: "\f1cb";
  8225. }
  8226. .fa-jsfiddle:before {
  8227. content: "\f1cc";
  8228. }
  8229. .fa-life-bouy:before,
  8230. .fa-life-buoy:before,
  8231. .fa-life-saver:before,
  8232. .fa-support:before,
  8233. .fa-life-ring:before {
  8234. content: "\f1cd";
  8235. }
  8236. .fa-circle-o-notch:before {
  8237. content: "\f1ce";
  8238. }
  8239. .fa-ra:before,
  8240. .fa-rebel:before {
  8241. content: "\f1d0";
  8242. }
  8243. .fa-ge:before,
  8244. .fa-empire:before {
  8245. content: "\f1d1";
  8246. }
  8247. .fa-git-square:before {
  8248. content: "\f1d2";
  8249. }
  8250. .fa-git:before {
  8251. content: "\f1d3";
  8252. }
  8253. .fa-hacker-news:before {
  8254. content: "\f1d4";
  8255. }
  8256. .fa-tencent-weibo:before {
  8257. content: "\f1d5";
  8258. }
  8259. .fa-qq:before {
  8260. content: "\f1d6";
  8261. }
  8262. .fa-wechat:before,
  8263. .fa-weixin:before {
  8264. content: "\f1d7";
  8265. }
  8266. .fa-send:before,
  8267. .fa-paper-plane:before {
  8268. content: "\f1d8";
  8269. }
  8270. .fa-send-o:before,
  8271. .fa-paper-plane-o:before {
  8272. content: "\f1d9";
  8273. }
  8274. .fa-history:before {
  8275. content: "\f1da";
  8276. }
  8277. .fa-circle-thin:before {
  8278. content: "\f1db";
  8279. }
  8280. .fa-header:before {
  8281. content: "\f1dc";
  8282. }
  8283. .fa-paragraph:before {
  8284. content: "\f1dd";
  8285. }
  8286. .fa-sliders:before {
  8287. content: "\f1de";
  8288. }
  8289. .fa-share-alt:before {
  8290. content: "\f1e0";
  8291. }
  8292. .fa-share-alt-square:before {
  8293. content: "\f1e1";
  8294. }
  8295. .fa-bomb:before {
  8296. content: "\f1e2";
  8297. }
  8298. .fa-soccer-ball-o:before,
  8299. .fa-futbol-o:before {
  8300. content: "\f1e3";
  8301. }
  8302. .fa-tty:before {
  8303. content: "\f1e4";
  8304. }
  8305. .fa-binoculars:before {
  8306. content: "\f1e5";
  8307. }
  8308. .fa-plug:before {
  8309. content: "\f1e6";
  8310. }
  8311. .fa-slideshare:before {
  8312. content: "\f1e7";
  8313. }
  8314. .fa-twitch:before {
  8315. content: "\f1e8";
  8316. }
  8317. .fa-yelp:before {
  8318. content: "\f1e9";
  8319. }
  8320. .fa-newspaper-o:before {
  8321. content: "\f1ea";
  8322. }
  8323. .fa-wifi:before {
  8324. content: "\f1eb";
  8325. }
  8326. .fa-calculator:before {
  8327. content: "\f1ec";
  8328. }
  8329. .fa-paypal:before {
  8330. content: "\f1ed";
  8331. }
  8332. .fa-google-wallet:before {
  8333. content: "\f1ee";
  8334. }
  8335. .fa-cc-visa:before {
  8336. content: "\f1f0";
  8337. }
  8338. .fa-cc-mastercard:before {
  8339. content: "\f1f1";
  8340. }
  8341. .fa-cc-discover:before {
  8342. content: "\f1f2";
  8343. }
  8344. .fa-cc-amex:before {
  8345. content: "\f1f3";
  8346. }
  8347. .fa-cc-paypal:before {
  8348. content: "\f1f4";
  8349. }
  8350. .fa-cc-stripe:before {
  8351. content: "\f1f5";
  8352. }
  8353. .fa-bell-slash:before {
  8354. content: "\f1f6";
  8355. }
  8356. .fa-bell-slash-o:before {
  8357. content: "\f1f7";
  8358. }
  8359. .fa-trash:before {
  8360. content: "\f1f8";
  8361. }
  8362. .fa-copyright:before {
  8363. content: "\f1f9";
  8364. }
  8365. .fa-at:before {
  8366. content: "\f1fa";
  8367. }
  8368. .fa-eyedropper:before {
  8369. content: "\f1fb";
  8370. }
  8371. .fa-paint-brush:before {
  8372. content: "\f1fc";
  8373. }
  8374. .fa-birthday-cake:before {
  8375. content: "\f1fd";
  8376. }
  8377. .fa-area-chart:before {
  8378. content: "\f1fe";
  8379. }
  8380. .fa-pie-chart:before {
  8381. content: "\f200";
  8382. }
  8383. .fa-line-chart:before {
  8384. content: "\f201";
  8385. }
  8386. .fa-lastfm:before {
  8387. content: "\f202";
  8388. }
  8389. .fa-lastfm-square:before {
  8390. content: "\f203";
  8391. }
  8392. .fa-toggle-off:before {
  8393. content: "\f204";
  8394. }
  8395. .fa-toggle-on:before {
  8396. content: "\f205";
  8397. }
  8398. .fa-bicycle:before {
  8399. content: "\f206";
  8400. }
  8401. .fa-bus:before {
  8402. content: "\f207";
  8403. }
  8404. .fa-ioxhost:before {
  8405. content: "\f208";
  8406. }
  8407. .fa-angellist:before {
  8408. content: "\f209";
  8409. }
  8410. .fa-cc:before {
  8411. content: "\f20a";
  8412. }
  8413. .fa-shekel:before,
  8414. .fa-sheqel:before,
  8415. .fa-ils:before {
  8416. content: "\f20b";
  8417. }
  8418. .fa-meanpath:before {
  8419. content: "\f20c";
  8420. }
  8421. /*!
  8422. *
  8423. * IPython base
  8424. *
  8425. */
  8426. .modal.fade .modal-dialog {
  8427. -webkit-transform: translate(0, 0);
  8428. -ms-transform: translate(0, 0);
  8429. -o-transform: translate(0, 0);
  8430. transform: translate(0, 0);
  8431. }
  8432. code {
  8433. color: #000;
  8434. }
  8435. pre {
  8436. font-size: inherit;
  8437. line-height: inherit;
  8438. }
  8439. label {
  8440. font-weight: normal;
  8441. }
  8442. /* Make the page background atleast 100% the height of the view port */
  8443. /* Make the page itself atleast 70% the height of the view port */
  8444. .border-box-sizing {
  8445. box-sizing: border-box;
  8446. -moz-box-sizing: border-box;
  8447. -webkit-box-sizing: border-box;
  8448. }
  8449. .corner-all {
  8450. border-radius: 2px;
  8451. }
  8452. .no-padding {
  8453. padding: 0px;
  8454. }
  8455. /* Flexible box model classes */
  8456. /* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
  8457. /* This file is a compatability layer. It allows the usage of flexible box
  8458. model layouts accross multiple browsers, including older browsers. The newest,
  8459. universal implementation of the flexible box model is used when available (see
  8460. `Modern browsers` comments below). Browsers that are known to implement this
  8461. new spec completely include:
  8462. Firefox 28.0+
  8463. Chrome 29.0+
  8464. Internet Explorer 11+
  8465. Opera 17.0+
  8466. Browsers not listed, including Safari, are supported via the styling under the
  8467. `Old browsers` comments below.
  8468. */
  8469. .hbox {
  8470. /* Old browsers */
  8471. display: -webkit-box;
  8472. -webkit-box-orient: horizontal;
  8473. -webkit-box-align: stretch;
  8474. display: -moz-box;
  8475. -moz-box-orient: horizontal;
  8476. -moz-box-align: stretch;
  8477. display: box;
  8478. box-orient: horizontal;
  8479. box-align: stretch;
  8480. /* Modern browsers */
  8481. display: flex;
  8482. flex-direction: row;
  8483. align-items: stretch;
  8484. }
  8485. .hbox > * {
  8486. /* Old browsers */
  8487. -webkit-box-flex: 0;
  8488. -moz-box-flex: 0;
  8489. box-flex: 0;
  8490. /* Modern browsers */
  8491. flex: none;
  8492. }
  8493. .vbox {
  8494. /* Old browsers */
  8495. display: -webkit-box;
  8496. -webkit-box-orient: vertical;
  8497. -webkit-box-align: stretch;
  8498. display: -moz-box;
  8499. -moz-box-orient: vertical;
  8500. -moz-box-align: stretch;
  8501. display: box;
  8502. box-orient: vertical;
  8503. box-align: stretch;
  8504. /* Modern browsers */
  8505. display: flex;
  8506. flex-direction: column;
  8507. align-items: stretch;
  8508. }
  8509. .vbox > * {
  8510. /* Old browsers */
  8511. -webkit-box-flex: 0;
  8512. -moz-box-flex: 0;
  8513. box-flex: 0;
  8514. /* Modern browsers */
  8515. flex: none;
  8516. }
  8517. .hbox.reverse,
  8518. .vbox.reverse,
  8519. .reverse {
  8520. /* Old browsers */
  8521. -webkit-box-direction: reverse;
  8522. -moz-box-direction: reverse;
  8523. box-direction: reverse;
  8524. /* Modern browsers */
  8525. flex-direction: row-reverse;
  8526. }
  8527. .hbox.box-flex0,
  8528. .vbox.box-flex0,
  8529. .box-flex0 {
  8530. /* Old browsers */
  8531. -webkit-box-flex: 0;
  8532. -moz-box-flex: 0;
  8533. box-flex: 0;
  8534. /* Modern browsers */
  8535. flex: none;
  8536. width: auto;
  8537. }
  8538. .hbox.box-flex1,
  8539. .vbox.box-flex1,
  8540. .box-flex1 {
  8541. /* Old browsers */
  8542. -webkit-box-flex: 1;
  8543. -moz-box-flex: 1;
  8544. box-flex: 1;
  8545. /* Modern browsers */
  8546. flex: 1;
  8547. }
  8548. .hbox.box-flex,
  8549. .vbox.box-flex,
  8550. .box-flex {
  8551. /* Old browsers */
  8552. /* Old browsers */
  8553. -webkit-box-flex: 1;
  8554. -moz-box-flex: 1;
  8555. box-flex: 1;
  8556. /* Modern browsers */
  8557. flex: 1;
  8558. }
  8559. .hbox.box-flex2,
  8560. .vbox.box-flex2,
  8561. .box-flex2 {
  8562. /* Old browsers */
  8563. -webkit-box-flex: 2;
  8564. -moz-box-flex: 2;
  8565. box-flex: 2;
  8566. /* Modern browsers */
  8567. flex: 2;
  8568. }
  8569. .box-group1 {
  8570. /* Deprecated */
  8571. -webkit-box-flex-group: 1;
  8572. -moz-box-flex-group: 1;
  8573. box-flex-group: 1;
  8574. }
  8575. .box-group2 {
  8576. /* Deprecated */
  8577. -webkit-box-flex-group: 2;
  8578. -moz-box-flex-group: 2;
  8579. box-flex-group: 2;
  8580. }
  8581. .hbox.start,
  8582. .vbox.start,
  8583. .start {
  8584. /* Old browsers */
  8585. -webkit-box-pack: start;
  8586. -moz-box-pack: start;
  8587. box-pack: start;
  8588. /* Modern browsers */
  8589. justify-content: flex-start;
  8590. }
  8591. .hbox.end,
  8592. .vbox.end,
  8593. .end {
  8594. /* Old browsers */
  8595. -webkit-box-pack: end;
  8596. -moz-box-pack: end;
  8597. box-pack: end;
  8598. /* Modern browsers */
  8599. justify-content: flex-end;
  8600. }
  8601. .hbox.center,
  8602. .vbox.center,
  8603. .center {
  8604. /* Old browsers */
  8605. -webkit-box-pack: center;
  8606. -moz-box-pack: center;
  8607. box-pack: center;
  8608. /* Modern browsers */
  8609. justify-content: center;
  8610. }
  8611. .hbox.baseline,
  8612. .vbox.baseline,
  8613. .baseline {
  8614. /* Old browsers */
  8615. -webkit-box-pack: baseline;
  8616. -moz-box-pack: baseline;
  8617. box-pack: baseline;
  8618. /* Modern browsers */
  8619. justify-content: baseline;
  8620. }
  8621. .hbox.stretch,
  8622. .vbox.stretch,
  8623. .stretch {
  8624. /* Old browsers */
  8625. -webkit-box-pack: stretch;
  8626. -moz-box-pack: stretch;
  8627. box-pack: stretch;
  8628. /* Modern browsers */
  8629. justify-content: stretch;
  8630. }
  8631. .hbox.align-start,
  8632. .vbox.align-start,
  8633. .align-start {
  8634. /* Old browsers */
  8635. -webkit-box-align: start;
  8636. -moz-box-align: start;
  8637. box-align: start;
  8638. /* Modern browsers */
  8639. align-items: flex-start;
  8640. }
  8641. .hbox.align-end,
  8642. .vbox.align-end,
  8643. .align-end {
  8644. /* Old browsers */
  8645. -webkit-box-align: end;
  8646. -moz-box-align: end;
  8647. box-align: end;
  8648. /* Modern browsers */
  8649. align-items: flex-end;
  8650. }
  8651. .hbox.align-center,
  8652. .vbox.align-center,
  8653. .align-center {
  8654. /* Old browsers */
  8655. -webkit-box-align: center;
  8656. -moz-box-align: center;
  8657. box-align: center;
  8658. /* Modern browsers */
  8659. align-items: center;
  8660. }
  8661. .hbox.align-baseline,
  8662. .vbox.align-baseline,
  8663. .align-baseline {
  8664. /* Old browsers */
  8665. -webkit-box-align: baseline;
  8666. -moz-box-align: baseline;
  8667. box-align: baseline;
  8668. /* Modern browsers */
  8669. align-items: baseline;
  8670. }
  8671. .hbox.align-stretch,
  8672. .vbox.align-stretch,
  8673. .align-stretch {
  8674. /* Old browsers */
  8675. -webkit-box-align: stretch;
  8676. -moz-box-align: stretch;
  8677. box-align: stretch;
  8678. /* Modern browsers */
  8679. align-items: stretch;
  8680. }
  8681. div.error {
  8682. margin: 2em;
  8683. text-align: center;
  8684. }
  8685. div.error > h1 {
  8686. font-size: 500%;
  8687. line-height: normal;
  8688. }
  8689. div.error > p {
  8690. font-size: 200%;
  8691. line-height: normal;
  8692. }
  8693. div.traceback-wrapper {
  8694. text-align: left;
  8695. max-width: 800px;
  8696. margin: auto;
  8697. }
  8698. /**
  8699. * Primary styles
  8700. *
  8701. * Author: Jupyter Development Team
  8702. */
  8703. body {
  8704. background-color: #fff;
  8705. /* This makes sure that the body covers the entire window and needs to
  8706. be in a different element than the display: box in wrapper below */
  8707. position: absolute;
  8708. left: 0px;
  8709. right: 0px;
  8710. top: 0px;
  8711. bottom: 0px;
  8712. overflow: visible;
  8713. }
  8714. body > #header {
  8715. /* Initially hidden to prevent FLOUC */
  8716. display: none;
  8717. background-color: #fff;
  8718. /* Display over codemirror */
  8719. position: relative;
  8720. z-index: 100;
  8721. }
  8722. body > #header #header-container {
  8723. padding-bottom: 5px;
  8724. padding-top: 5px;
  8725. box-sizing: border-box;
  8726. -moz-box-sizing: border-box;
  8727. -webkit-box-sizing: border-box;
  8728. }
  8729. body > #header .header-bar {
  8730. width: 100%;
  8731. height: 1px;
  8732. background: #e7e7e7;
  8733. margin-bottom: -1px;
  8734. }
  8735. @media print {
  8736. body > #header {
  8737. display: none !important;
  8738. }
  8739. }
  8740. #header-spacer {
  8741. width: 100%;
  8742. visibility: hidden;
  8743. }
  8744. @media print {
  8745. #header-spacer {
  8746. display: none;
  8747. }
  8748. }
  8749. #ipython_notebook {
  8750. padding-left: 0px;
  8751. padding-top: 1px;
  8752. padding-bottom: 1px;
  8753. }
  8754. @media (max-width: 991px) {
  8755. #ipython_notebook {
  8756. margin-left: 10px;
  8757. }
  8758. }
  8759. #noscript {
  8760. width: auto;
  8761. padding-top: 16px;
  8762. padding-bottom: 16px;
  8763. text-align: center;
  8764. font-size: 22px;
  8765. color: red;
  8766. font-weight: bold;
  8767. }
  8768. #ipython_notebook img {
  8769. height: 28px;
  8770. }
  8771. #site {
  8772. width: 100%;
  8773. display: none;
  8774. box-sizing: border-box;
  8775. -moz-box-sizing: border-box;
  8776. -webkit-box-sizing: border-box;
  8777. overflow: auto;
  8778. }
  8779. @media print {
  8780. #site {
  8781. height: auto !important;
  8782. }
  8783. }
  8784. /* Smaller buttons */
  8785. .ui-button .ui-button-text {
  8786. padding: 0.2em 0.8em;
  8787. font-size: 77%;
  8788. }
  8789. input.ui-button {
  8790. padding: 0.3em 0.9em;
  8791. }
  8792. span#login_widget {
  8793. float: right;
  8794. }
  8795. span#login_widget > .button,
  8796. #logout {
  8797. color: #333;
  8798. background-color: #fff;
  8799. border-color: #ccc;
  8800. }
  8801. span#login_widget > .button:focus,
  8802. #logout:focus,
  8803. span#login_widget > .button.focus,
  8804. #logout.focus {
  8805. color: #333;
  8806. background-color: #e6e6e6;
  8807. border-color: #8c8c8c;
  8808. }
  8809. span#login_widget > .button:hover,
  8810. #logout:hover {
  8811. color: #333;
  8812. background-color: #e6e6e6;
  8813. border-color: #adadad;
  8814. }
  8815. span#login_widget > .button:active,
  8816. #logout:active,
  8817. span#login_widget > .button.active,
  8818. #logout.active,
  8819. .open > .dropdown-togglespan#login_widget > .button,
  8820. .open > .dropdown-toggle#logout {
  8821. color: #333;
  8822. background-color: #e6e6e6;
  8823. border-color: #adadad;
  8824. }
  8825. span#login_widget > .button:active:hover,
  8826. #logout:active:hover,
  8827. span#login_widget > .button.active:hover,
  8828. #logout.active:hover,
  8829. .open > .dropdown-togglespan#login_widget > .button:hover,
  8830. .open > .dropdown-toggle#logout:hover,
  8831. span#login_widget > .button:active:focus,
  8832. #logout:active:focus,
  8833. span#login_widget > .button.active:focus,
  8834. #logout.active:focus,
  8835. .open > .dropdown-togglespan#login_widget > .button:focus,
  8836. .open > .dropdown-toggle#logout:focus,
  8837. span#login_widget > .button:active.focus,
  8838. #logout:active.focus,
  8839. span#login_widget > .button.active.focus,
  8840. #logout.active.focus,
  8841. .open > .dropdown-togglespan#login_widget > .button.focus,
  8842. .open > .dropdown-toggle#logout.focus {
  8843. color: #333;
  8844. background-color: #d4d4d4;
  8845. border-color: #8c8c8c;
  8846. }
  8847. span#login_widget > .button:active,
  8848. #logout:active,
  8849. span#login_widget > .button.active,
  8850. #logout.active,
  8851. .open > .dropdown-togglespan#login_widget > .button,
  8852. .open > .dropdown-toggle#logout {
  8853. background-image: none;
  8854. }
  8855. span#login_widget > .button.disabled:hover,
  8856. #logout.disabled:hover,
  8857. span#login_widget > .button[disabled]:hover,
  8858. #logout[disabled]:hover,
  8859. fieldset[disabled] span#login_widget > .button:hover,
  8860. fieldset[disabled] #logout:hover,
  8861. span#login_widget > .button.disabled:focus,
  8862. #logout.disabled:focus,
  8863. span#login_widget > .button[disabled]:focus,
  8864. #logout[disabled]:focus,
  8865. fieldset[disabled] span#login_widget > .button:focus,
  8866. fieldset[disabled] #logout:focus,
  8867. span#login_widget > .button.disabled.focus,
  8868. #logout.disabled.focus,
  8869. span#login_widget > .button[disabled].focus,
  8870. #logout[disabled].focus,
  8871. fieldset[disabled] span#login_widget > .button.focus,
  8872. fieldset[disabled] #logout.focus {
  8873. background-color: #fff;
  8874. border-color: #ccc;
  8875. }
  8876. span#login_widget > .button .badge,
  8877. #logout .badge {
  8878. color: #fff;
  8879. background-color: #333;
  8880. }
  8881. .nav-header {
  8882. text-transform: none;
  8883. }
  8884. #header > span {
  8885. margin-top: 10px;
  8886. }
  8887. .modal_stretch .modal-dialog {
  8888. /* Old browsers */
  8889. display: -webkit-box;
  8890. -webkit-box-orient: vertical;
  8891. -webkit-box-align: stretch;
  8892. display: -moz-box;
  8893. -moz-box-orient: vertical;
  8894. -moz-box-align: stretch;
  8895. display: box;
  8896. box-orient: vertical;
  8897. box-align: stretch;
  8898. /* Modern browsers */
  8899. display: flex;
  8900. flex-direction: column;
  8901. align-items: stretch;
  8902. min-height: 80vh;
  8903. }
  8904. .modal_stretch .modal-dialog .modal-body {
  8905. max-height: calc(100vh - 200px);
  8906. overflow: auto;
  8907. flex: 1;
  8908. }
  8909. @media (min-width: 768px) {
  8910. .modal .modal-dialog {
  8911. width: 700px;
  8912. }
  8913. }
  8914. @media (min-width: 768px) {
  8915. select.form-control {
  8916. margin-left: 12px;
  8917. margin-right: 12px;
  8918. }
  8919. }
  8920. /*!
  8921. *
  8922. * IPython auth
  8923. *
  8924. */
  8925. .center-nav {
  8926. display: inline-block;
  8927. margin-bottom: -4px;
  8928. }
  8929. /*!
  8930. *
  8931. * IPython tree view
  8932. *
  8933. */
  8934. /* We need an invisible input field on top of the sentense*/
  8935. /* "Drag file onto the list ..." */
  8936. .alternate_upload {
  8937. background-color: none;
  8938. display: inline;
  8939. }
  8940. .alternate_upload.form {
  8941. padding: 0;
  8942. margin: 0;
  8943. }
  8944. .alternate_upload input.fileinput {
  8945. text-align: center;
  8946. vertical-align: middle;
  8947. display: inline;
  8948. opacity: 0;
  8949. z-index: 2;
  8950. width: 12ex;
  8951. margin-right: -12ex;
  8952. }
  8953. .alternate_upload .btn-upload {
  8954. height: 22px;
  8955. }
  8956. /**
  8957. * Primary styles
  8958. *
  8959. * Author: Jupyter Development Team
  8960. */
  8961. ul#tabs {
  8962. margin-bottom: 4px;
  8963. }
  8964. ul#tabs a {
  8965. padding-top: 6px;
  8966. padding-bottom: 4px;
  8967. }
  8968. ul.breadcrumb a:focus,
  8969. ul.breadcrumb a:hover {
  8970. text-decoration: none;
  8971. }
  8972. ul.breadcrumb i.icon-home {
  8973. font-size: 16px;
  8974. margin-right: 4px;
  8975. }
  8976. ul.breadcrumb span {
  8977. color: #5e5e5e;
  8978. }
  8979. .list_toolbar {
  8980. padding: 4px 0 4px 0;
  8981. vertical-align: middle;
  8982. }
  8983. .list_toolbar .tree-buttons {
  8984. padding-top: 1px;
  8985. }
  8986. .dynamic-buttons {
  8987. padding-top: 3px;
  8988. display: inline-block;
  8989. }
  8990. .list_toolbar [class*="span"] {
  8991. min-height: 24px;
  8992. }
  8993. .list_header {
  8994. font-weight: bold;
  8995. background-color: #EEE;
  8996. }
  8997. .list_placeholder {
  8998. font-weight: bold;
  8999. padding-top: 4px;
  9000. padding-bottom: 4px;
  9001. padding-left: 7px;
  9002. padding-right: 7px;
  9003. }
  9004. .list_container {
  9005. margin-top: 4px;
  9006. margin-bottom: 20px;
  9007. border: 1px solid #ddd;
  9008. border-radius: 2px;
  9009. }
  9010. .list_container > div {
  9011. border-bottom: 1px solid #ddd;
  9012. }
  9013. .list_container > div:hover .list-item {
  9014. background-color: red;
  9015. }
  9016. .list_container > div:last-child {
  9017. border: none;
  9018. }
  9019. .list_item:hover .list_item {
  9020. background-color: #ddd;
  9021. }
  9022. .list_item a {
  9023. text-decoration: none;
  9024. }
  9025. .list_item:hover {
  9026. background-color: #fafafa;
  9027. }
  9028. .list_header > div,
  9029. .list_item > div {
  9030. padding-top: 4px;
  9031. padding-bottom: 4px;
  9032. padding-left: 7px;
  9033. padding-right: 7px;
  9034. line-height: 22px;
  9035. }
  9036. .list_header > div input,
  9037. .list_item > div input {
  9038. margin-right: 7px;
  9039. margin-left: 14px;
  9040. vertical-align: baseline;
  9041. line-height: 22px;
  9042. position: relative;
  9043. top: -1px;
  9044. }
  9045. .list_header > div .item_link,
  9046. .list_item > div .item_link {
  9047. margin-left: -1px;
  9048. vertical-align: baseline;
  9049. line-height: 22px;
  9050. }
  9051. .new-file input[type=checkbox] {
  9052. visibility: hidden;
  9053. }
  9054. .item_name {
  9055. line-height: 22px;
  9056. height: 24px;
  9057. }
  9058. .item_icon {
  9059. font-size: 14px;
  9060. color: #5e5e5e;
  9061. margin-right: 7px;
  9062. margin-left: 7px;
  9063. line-height: 22px;
  9064. vertical-align: baseline;
  9065. }
  9066. .item_buttons {
  9067. line-height: 1em;
  9068. margin-left: -5px;
  9069. }
  9070. .item_buttons .btn,
  9071. .item_buttons .btn-group,
  9072. .item_buttons .input-group {
  9073. float: left;
  9074. }
  9075. .item_buttons > .btn,
  9076. .item_buttons > .btn-group,
  9077. .item_buttons > .input-group {
  9078. margin-left: 5px;
  9079. }
  9080. .item_buttons .btn {
  9081. min-width: 13ex;
  9082. }
  9083. .item_buttons .running-indicator {
  9084. padding-top: 4px;
  9085. color: #5cb85c;
  9086. }
  9087. .item_buttons .kernel-name {
  9088. padding-top: 4px;
  9089. color: #5bc0de;
  9090. margin-right: 7px;
  9091. float: left;
  9092. }
  9093. .toolbar_info {
  9094. height: 24px;
  9095. line-height: 24px;
  9096. }
  9097. .list_item input:not([type=checkbox]) {
  9098. padding-top: 3px;
  9099. padding-bottom: 3px;
  9100. height: 22px;
  9101. line-height: 14px;
  9102. margin: 0px;
  9103. }
  9104. .highlight_text {
  9105. color: blue;
  9106. }
  9107. #project_name {
  9108. display: inline-block;
  9109. padding-left: 7px;
  9110. margin-left: -2px;
  9111. }
  9112. #project_name > .breadcrumb {
  9113. padding: 0px;
  9114. margin-bottom: 0px;
  9115. background-color: transparent;
  9116. font-weight: bold;
  9117. }
  9118. #tree-selector {
  9119. padding-right: 0px;
  9120. }
  9121. #button-select-all {
  9122. min-width: 50px;
  9123. }
  9124. #select-all {
  9125. margin-left: 7px;
  9126. margin-right: 2px;
  9127. }
  9128. .menu_icon {
  9129. margin-right: 2px;
  9130. }
  9131. .tab-content .row {
  9132. margin-left: 0px;
  9133. margin-right: 0px;
  9134. }
  9135. .folder_icon:before {
  9136. display: inline-block;
  9137. font: normal normal normal 14px/1 FontAwesome;
  9138. font-size: inherit;
  9139. text-rendering: auto;
  9140. -webkit-font-smoothing: antialiased;
  9141. -moz-osx-font-smoothing: grayscale;
  9142. content: "\f114";
  9143. }
  9144. .folder_icon:before.pull-left {
  9145. margin-right: .3em;
  9146. }
  9147. .folder_icon:before.pull-right {
  9148. margin-left: .3em;
  9149. }
  9150. .notebook_icon:before {
  9151. display: inline-block;
  9152. font: normal normal normal 14px/1 FontAwesome;
  9153. font-size: inherit;
  9154. text-rendering: auto;
  9155. -webkit-font-smoothing: antialiased;
  9156. -moz-osx-font-smoothing: grayscale;
  9157. content: "\f02d";
  9158. position: relative;
  9159. top: -1px;
  9160. }
  9161. .notebook_icon:before.pull-left {
  9162. margin-right: .3em;
  9163. }
  9164. .notebook_icon:before.pull-right {
  9165. margin-left: .3em;
  9166. }
  9167. .running_notebook_icon:before {
  9168. display: inline-block;
  9169. font: normal normal normal 14px/1 FontAwesome;
  9170. font-size: inherit;
  9171. text-rendering: auto;
  9172. -webkit-font-smoothing: antialiased;
  9173. -moz-osx-font-smoothing: grayscale;
  9174. content: "\f02d";
  9175. position: relative;
  9176. top: -1px;
  9177. color: #5cb85c;
  9178. }
  9179. .running_notebook_icon:before.pull-left {
  9180. margin-right: .3em;
  9181. }
  9182. .running_notebook_icon:before.pull-right {
  9183. margin-left: .3em;
  9184. }
  9185. .file_icon:before {
  9186. display: inline-block;
  9187. font: normal normal normal 14px/1 FontAwesome;
  9188. font-size: inherit;
  9189. text-rendering: auto;
  9190. -webkit-font-smoothing: antialiased;
  9191. -moz-osx-font-smoothing: grayscale;
  9192. content: "\f016";
  9193. position: relative;
  9194. top: -2px;
  9195. }
  9196. .file_icon:before.pull-left {
  9197. margin-right: .3em;
  9198. }
  9199. .file_icon:before.pull-right {
  9200. margin-left: .3em;
  9201. }
  9202. #notebook_toolbar .pull-right {
  9203. padding-top: 0px;
  9204. margin-right: -1px;
  9205. }
  9206. ul#new-menu {
  9207. left: auto;
  9208. right: 0;
  9209. }
  9210. .kernel-menu-icon {
  9211. padding-right: 12px;
  9212. width: 24px;
  9213. content: "\f096";
  9214. }
  9215. .kernel-menu-icon:before {
  9216. content: "\f096";
  9217. }
  9218. .kernel-menu-icon-current:before {
  9219. content: "\f00c";
  9220. }
  9221. #tab_content {
  9222. padding-top: 20px;
  9223. }
  9224. #running .panel-group .panel {
  9225. margin-top: 3px;
  9226. margin-bottom: 1em;
  9227. }
  9228. #running .panel-group .panel .panel-heading {
  9229. background-color: #EEE;
  9230. padding-top: 4px;
  9231. padding-bottom: 4px;
  9232. padding-left: 7px;
  9233. padding-right: 7px;
  9234. line-height: 22px;
  9235. }
  9236. #running .panel-group .panel .panel-heading a:focus,
  9237. #running .panel-group .panel .panel-heading a:hover {
  9238. text-decoration: none;
  9239. }
  9240. #running .panel-group .panel .panel-body {
  9241. padding: 0px;
  9242. }
  9243. #running .panel-group .panel .panel-body .list_container {
  9244. margin-top: 0px;
  9245. margin-bottom: 0px;
  9246. border: 0px;
  9247. border-radius: 0px;
  9248. }
  9249. #running .panel-group .panel .panel-body .list_container .list_item {
  9250. border-bottom: 1px solid #ddd;
  9251. }
  9252. #running .panel-group .panel .panel-body .list_container .list_item:last-child {
  9253. border-bottom: 0px;
  9254. }
  9255. .delete-button {
  9256. display: none;
  9257. }
  9258. .duplicate-button {
  9259. display: none;
  9260. }
  9261. .rename-button {
  9262. display: none;
  9263. }
  9264. .shutdown-button {
  9265. display: none;
  9266. }
  9267. .dynamic-instructions {
  9268. display: inline-block;
  9269. padding-top: 4px;
  9270. }
  9271. /*!
  9272. *
  9273. * IPython text editor webapp
  9274. *
  9275. */
  9276. .selected-keymap i.fa {
  9277. padding: 0px 5px;
  9278. }
  9279. .selected-keymap i.fa:before {
  9280. content: "\f00c";
  9281. }
  9282. #mode-menu {
  9283. overflow: auto;
  9284. max-height: 20em;
  9285. }
  9286. .edit_app #header {
  9287. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  9288. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  9289. }
  9290. .edit_app #menubar .navbar {
  9291. /* Use a negative 1 bottom margin, so the border overlaps the border of the
  9292. header */
  9293. margin-bottom: -1px;
  9294. }
  9295. .dirty-indicator {
  9296. display: inline-block;
  9297. font: normal normal normal 14px/1 FontAwesome;
  9298. font-size: inherit;
  9299. text-rendering: auto;
  9300. -webkit-font-smoothing: antialiased;
  9301. -moz-osx-font-smoothing: grayscale;
  9302. width: 20px;
  9303. }
  9304. .dirty-indicator.pull-left {
  9305. margin-right: .3em;
  9306. }
  9307. .dirty-indicator.pull-right {
  9308. margin-left: .3em;
  9309. }
  9310. .dirty-indicator-dirty {
  9311. display: inline-block;
  9312. font: normal normal normal 14px/1 FontAwesome;
  9313. font-size: inherit;
  9314. text-rendering: auto;
  9315. -webkit-font-smoothing: antialiased;
  9316. -moz-osx-font-smoothing: grayscale;
  9317. width: 20px;
  9318. }
  9319. .dirty-indicator-dirty.pull-left {
  9320. margin-right: .3em;
  9321. }
  9322. .dirty-indicator-dirty.pull-right {
  9323. margin-left: .3em;
  9324. }
  9325. .dirty-indicator-clean {
  9326. display: inline-block;
  9327. font: normal normal normal 14px/1 FontAwesome;
  9328. font-size: inherit;
  9329. text-rendering: auto;
  9330. -webkit-font-smoothing: antialiased;
  9331. -moz-osx-font-smoothing: grayscale;
  9332. width: 20px;
  9333. }
  9334. .dirty-indicator-clean.pull-left {
  9335. margin-right: .3em;
  9336. }
  9337. .dirty-indicator-clean.pull-right {
  9338. margin-left: .3em;
  9339. }
  9340. .dirty-indicator-clean:before {
  9341. display: inline-block;
  9342. font: normal normal normal 14px/1 FontAwesome;
  9343. font-size: inherit;
  9344. text-rendering: auto;
  9345. -webkit-font-smoothing: antialiased;
  9346. -moz-osx-font-smoothing: grayscale;
  9347. content: "\f00c";
  9348. }
  9349. .dirty-indicator-clean:before.pull-left {
  9350. margin-right: .3em;
  9351. }
  9352. .dirty-indicator-clean:before.pull-right {
  9353. margin-left: .3em;
  9354. }
  9355. #filename {
  9356. font-size: 16pt;
  9357. display: table;
  9358. padding: 0px 5px;
  9359. }
  9360. #current-mode {
  9361. padding-left: 5px;
  9362. padding-right: 5px;
  9363. }
  9364. #texteditor-backdrop {
  9365. padding-top: 20px;
  9366. padding-bottom: 20px;
  9367. }
  9368. @media not print {
  9369. #texteditor-backdrop {
  9370. background-color: #EEE;
  9371. }
  9372. }
  9373. @media print {
  9374. #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  9375. #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
  9376. background-color: #fff;
  9377. }
  9378. }
  9379. @media not print {
  9380. #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  9381. #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
  9382. background-color: #fff;
  9383. }
  9384. }
  9385. @media not print {
  9386. #texteditor-backdrop #texteditor-container {
  9387. padding: 0px;
  9388. background-color: #fff;
  9389. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  9390. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  9391. }
  9392. }
  9393. /*!
  9394. *
  9395. * IPython notebook
  9396. *
  9397. */
  9398. /* CSS font colors for translated ANSI colors. */
  9399. .ansibold {
  9400. font-weight: bold;
  9401. }
  9402. /* use dark versions for foreground, to improve visibility */
  9403. .ansiblack {
  9404. color: black;
  9405. }
  9406. .ansired {
  9407. color: darkred;
  9408. }
  9409. .ansigreen {
  9410. color: darkgreen;
  9411. }
  9412. .ansiyellow {
  9413. color: #c4a000;
  9414. }
  9415. .ansiblue {
  9416. color: darkblue;
  9417. }
  9418. .ansipurple {
  9419. color: darkviolet;
  9420. }
  9421. .ansicyan {
  9422. color: steelblue;
  9423. }
  9424. .ansigray {
  9425. color: gray;
  9426. }
  9427. /* and light for background, for the same reason */
  9428. .ansibgblack {
  9429. background-color: black;
  9430. }
  9431. .ansibgred {
  9432. background-color: red;
  9433. }
  9434. .ansibggreen {
  9435. background-color: green;
  9436. }
  9437. .ansibgyellow {
  9438. background-color: yellow;
  9439. }
  9440. .ansibgblue {
  9441. background-color: blue;
  9442. }
  9443. .ansibgpurple {
  9444. background-color: magenta;
  9445. }
  9446. .ansibgcyan {
  9447. background-color: cyan;
  9448. }
  9449. .ansibggray {
  9450. background-color: gray;
  9451. }
  9452. div.cell {
  9453. /* Old browsers */
  9454. display: -webkit-box;
  9455. -webkit-box-orient: vertical;
  9456. -webkit-box-align: stretch;
  9457. display: -moz-box;
  9458. -moz-box-orient: vertical;
  9459. -moz-box-align: stretch;
  9460. display: box;
  9461. box-orient: vertical;
  9462. box-align: stretch;
  9463. /* Modern browsers */
  9464. display: flex;
  9465. flex-direction: column;
  9466. align-items: stretch;
  9467. border-radius: 2px;
  9468. box-sizing: border-box;
  9469. -moz-box-sizing: border-box;
  9470. -webkit-box-sizing: border-box;
  9471. border-width: 1px;
  9472. border-style: solid;
  9473. border-color: transparent;
  9474. width: 100%;
  9475. padding: 5px;
  9476. /* This acts as a spacer between cells, that is outside the border */
  9477. margin: 0px;
  9478. outline: none;
  9479. border-left-width: 1px;
  9480. padding-left: 5px;
  9481. background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
  9482. }
  9483. div.cell.jupyter-soft-selected {
  9484. border-left-color: #90CAF9;
  9485. border-left-color: #E3F2FD;
  9486. border-left-width: 1px;
  9487. padding-left: 5px;
  9488. border-right-color: #E3F2FD;
  9489. border-right-width: 1px;
  9490. background: #E3F2FD;
  9491. }
  9492. @media print {
  9493. div.cell.jupyter-soft-selected {
  9494. border-color: transparent;
  9495. }
  9496. }
  9497. div.cell.selected {
  9498. border-color: #ababab;
  9499. border-left-width: 0px;
  9500. padding-left: 6px;
  9501. background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
  9502. }
  9503. @media print {
  9504. div.cell.selected {
  9505. border-color: transparent;
  9506. }
  9507. }
  9508. div.cell.selected.jupyter-soft-selected {
  9509. border-left-width: 0;
  9510. padding-left: 6px;
  9511. background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
  9512. }
  9513. .edit_mode div.cell.selected {
  9514. border-color: #66BB6A;
  9515. border-left-width: 0px;
  9516. padding-left: 6px;
  9517. background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
  9518. }
  9519. @media print {
  9520. .edit_mode div.cell.selected {
  9521. border-color: transparent;
  9522. }
  9523. }
  9524. .prompt {
  9525. /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  9526. min-width: 14ex;
  9527. /* This padding is tuned to match the padding on the CodeMirror editor. */
  9528. padding: 0.4em;
  9529. margin: 0px;
  9530. font-family: monospace;
  9531. text-align: right;
  9532. /* This has to match that of the the CodeMirror class line-height below */
  9533. line-height: 1.21429em;
  9534. /* Don't highlight prompt number selection */
  9535. -webkit-touch-callout: none;
  9536. -webkit-user-select: none;
  9537. -khtml-user-select: none;
  9538. -moz-user-select: none;
  9539. -ms-user-select: none;
  9540. user-select: none;
  9541. /* Use default cursor */
  9542. cursor: default;
  9543. }
  9544. @media (max-width: 540px) {
  9545. .prompt {
  9546. text-align: left;
  9547. }
  9548. }
  9549. div.inner_cell {
  9550. /* Old browsers */
  9551. display: -webkit-box;
  9552. -webkit-box-orient: vertical;
  9553. -webkit-box-align: stretch;
  9554. display: -moz-box;
  9555. -moz-box-orient: vertical;
  9556. -moz-box-align: stretch;
  9557. display: box;
  9558. box-orient: vertical;
  9559. box-align: stretch;
  9560. /* Modern browsers */
  9561. display: flex;
  9562. flex-direction: column;
  9563. align-items: stretch;
  9564. /* Old browsers */
  9565. -webkit-box-flex: 1;
  9566. -moz-box-flex: 1;
  9567. box-flex: 1;
  9568. /* Modern browsers */
  9569. flex: 1;
  9570. }
  9571. @-moz-document url-prefix() {
  9572. div.inner_cell {
  9573. overflow-x: hidden;
  9574. }
  9575. }
  9576. /* input_area and input_prompt must match in top border and margin for alignment */
  9577. div.input_area {
  9578. border: 1px solid #cfcfcf;
  9579. border-radius: 2px;
  9580. background: #f7f7f7;
  9581. line-height: 1.21429em;
  9582. }
  9583. /* This is needed so that empty prompt areas can collapse to zero height when there
  9584. is no content in the output_subarea and the prompt. The main purpose of this is
  9585. to make sure that empty JavaScript output_subareas have no height. */
  9586. div.prompt:empty {
  9587. padding-top: 0;
  9588. padding-bottom: 0;
  9589. }
  9590. div.unrecognized_cell {
  9591. padding: 5px 5px 5px 0px;
  9592. /* Old browsers */
  9593. display: -webkit-box;
  9594. -webkit-box-orient: horizontal;
  9595. -webkit-box-align: stretch;
  9596. display: -moz-box;
  9597. -moz-box-orient: horizontal;
  9598. -moz-box-align: stretch;
  9599. display: box;
  9600. box-orient: horizontal;
  9601. box-align: stretch;
  9602. /* Modern browsers */
  9603. display: flex;
  9604. flex-direction: row;
  9605. align-items: stretch;
  9606. }
  9607. div.unrecognized_cell .inner_cell {
  9608. border-radius: 2px;
  9609. padding: 5px;
  9610. font-weight: bold;
  9611. color: red;
  9612. border: 1px solid #cfcfcf;
  9613. background: #eaeaea;
  9614. }
  9615. div.unrecognized_cell .inner_cell a {
  9616. color: inherit;
  9617. text-decoration: none;
  9618. }
  9619. div.unrecognized_cell .inner_cell a:hover {
  9620. color: inherit;
  9621. text-decoration: none;
  9622. }
  9623. @media (max-width: 540px) {
  9624. div.unrecognized_cell > div.prompt {
  9625. display: none;
  9626. }
  9627. }
  9628. div.code_cell {
  9629. /* avoid page breaking on code cells when printing */
  9630. }
  9631. @media print {
  9632. div.code_cell {
  9633. page-break-inside: avoid;
  9634. }
  9635. }
  9636. /* any special styling for code cells that are currently running goes here */
  9637. div.input {
  9638. page-break-inside: avoid;
  9639. /* Old browsers */
  9640. display: -webkit-box;
  9641. -webkit-box-orient: horizontal;
  9642. -webkit-box-align: stretch;
  9643. display: -moz-box;
  9644. -moz-box-orient: horizontal;
  9645. -moz-box-align: stretch;
  9646. display: box;
  9647. box-orient: horizontal;
  9648. box-align: stretch;
  9649. /* Modern browsers */
  9650. display: flex;
  9651. flex-direction: row;
  9652. align-items: stretch;
  9653. }
  9654. @media (max-width: 540px) {
  9655. div.input {
  9656. /* Old browsers */
  9657. display: -webkit-box;
  9658. -webkit-box-orient: vertical;
  9659. -webkit-box-align: stretch;
  9660. display: -moz-box;
  9661. -moz-box-orient: vertical;
  9662. -moz-box-align: stretch;
  9663. display: box;
  9664. box-orient: vertical;
  9665. box-align: stretch;
  9666. /* Modern browsers */
  9667. display: flex;
  9668. flex-direction: column;
  9669. align-items: stretch;
  9670. }
  9671. }
  9672. /* input_area and input_prompt must match in top border and margin for alignment */
  9673. div.input_prompt {
  9674. color: #303F9F;
  9675. border-top: 1px solid transparent;
  9676. }
  9677. div.input_area > div.highlight {
  9678. margin: 0.4em;
  9679. border: none;
  9680. padding: 0px;
  9681. background-color: transparent;
  9682. }
  9683. div.input_area > div.highlight > pre {
  9684. margin: 0px;
  9685. border: none;
  9686. padding: 0px;
  9687. background-color: transparent;
  9688. }
  9689. /* The following gets added to the <head> if it is detected that the user has a
  9690. * monospace font with inconsistent normal/bold/italic height. See
  9691. * notebookmain.js. Such fonts will have keywords vertically offset with
  9692. * respect to the rest of the text. The user should select a better font.
  9693. * See: https://github.com/ipython/ipython/issues/1503
  9694. *
  9695. * .CodeMirror span {
  9696. * vertical-align: bottom;
  9697. * }
  9698. */
  9699. .CodeMirror {
  9700. line-height: 1.21429em;
  9701. /* Changed from 1em to our global default */
  9702. font-size: 14px;
  9703. height: auto;
  9704. /* Changed to auto to autogrow */
  9705. background: none;
  9706. /* Changed from white to allow our bg to show through */
  9707. }
  9708. .CodeMirror-scroll {
  9709. /* The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  9710. /* We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  9711. overflow-y: hidden;
  9712. overflow-x: auto;
  9713. }
  9714. .CodeMirror-lines {
  9715. /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  9716. /* we have set a different line-height and want this to scale with that. */
  9717. padding: 0.4em;
  9718. }
  9719. .CodeMirror-linenumber {
  9720. padding: 0 8px 0 4px;
  9721. }
  9722. .CodeMirror-gutters {
  9723. border-bottom-left-radius: 2px;
  9724. border-top-left-radius: 2px;
  9725. }
  9726. .CodeMirror pre {
  9727. /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  9728. /* .CodeMirror-lines */
  9729. padding: 0;
  9730. border: 0;
  9731. border-radius: 0;
  9732. }
  9733. /*
  9734. Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
  9735. Adapted from GitHub theme
  9736. */
  9737. .highlight-base {
  9738. color: #000;
  9739. }
  9740. .highlight-variable {
  9741. color: #000;
  9742. }
  9743. .highlight-variable-2 {
  9744. color: #1a1a1a;
  9745. }
  9746. .highlight-variable-3 {
  9747. color: #333333;
  9748. }
  9749. .highlight-string {
  9750. color: #BA2121;
  9751. }
  9752. .highlight-comment {
  9753. color: #408080;
  9754. font-style: italic;
  9755. }
  9756. .highlight-number {
  9757. color: #080;
  9758. }
  9759. .highlight-atom {
  9760. color: #88F;
  9761. }
  9762. .highlight-keyword {
  9763. color: #008000;
  9764. font-weight: bold;
  9765. }
  9766. .highlight-builtin {
  9767. color: #008000;
  9768. }
  9769. .highlight-error {
  9770. color: #f00;
  9771. }
  9772. .highlight-operator {
  9773. color: #AA22FF;
  9774. font-weight: bold;
  9775. }
  9776. .highlight-meta {
  9777. color: #AA22FF;
  9778. }
  9779. /* previously not defined, copying from default codemirror */
  9780. .highlight-def {
  9781. color: #00f;
  9782. }
  9783. .highlight-string-2 {
  9784. color: #f50;
  9785. }
  9786. .highlight-qualifier {
  9787. color: #555;
  9788. }
  9789. .highlight-bracket {
  9790. color: #997;
  9791. }
  9792. .highlight-tag {
  9793. color: #170;
  9794. }
  9795. .highlight-attribute {
  9796. color: #00c;
  9797. }
  9798. .highlight-header {
  9799. color: blue;
  9800. }
  9801. .highlight-quote {
  9802. color: #090;
  9803. }
  9804. .highlight-link {
  9805. color: #00c;
  9806. }
  9807. /* apply the same style to codemirror */
  9808. .cm-s-ipython span.cm-keyword {
  9809. color: #008000;
  9810. font-weight: bold;
  9811. }
  9812. .cm-s-ipython span.cm-atom {
  9813. color: #88F;
  9814. }
  9815. .cm-s-ipython span.cm-number {
  9816. color: #080;
  9817. }
  9818. .cm-s-ipython span.cm-def {
  9819. color: #00f;
  9820. }
  9821. .cm-s-ipython span.cm-variable {
  9822. color: #000;
  9823. }
  9824. .cm-s-ipython span.cm-operator {
  9825. color: #AA22FF;
  9826. font-weight: bold;
  9827. }
  9828. .cm-s-ipython span.cm-variable-2 {
  9829. color: #1a1a1a;
  9830. }
  9831. .cm-s-ipython span.cm-variable-3 {
  9832. color: #333333;
  9833. }
  9834. .cm-s-ipython span.cm-comment {
  9835. color: #408080;
  9836. font-style: italic;
  9837. }
  9838. .cm-s-ipython span.cm-string {
  9839. color: #BA2121;
  9840. }
  9841. .cm-s-ipython span.cm-string-2 {
  9842. color: #f50;
  9843. }
  9844. .cm-s-ipython span.cm-meta {
  9845. color: #AA22FF;
  9846. }
  9847. .cm-s-ipython span.cm-qualifier {
  9848. color: #555;
  9849. }
  9850. .cm-s-ipython span.cm-builtin {
  9851. color: #008000;
  9852. }
  9853. .cm-s-ipython span.cm-bracket {
  9854. color: #997;
  9855. }
  9856. .cm-s-ipython span.cm-tag {
  9857. color: #170;
  9858. }
  9859. .cm-s-ipython span.cm-attribute {
  9860. color: #00c;
  9861. }
  9862. .cm-s-ipython span.cm-header {
  9863. color: blue;
  9864. }
  9865. .cm-s-ipython span.cm-quote {
  9866. color: #090;
  9867. }
  9868. .cm-s-ipython span.cm-link {
  9869. color: #00c;
  9870. }
  9871. .cm-s-ipython span.cm-error {
  9872. color: #f00;
  9873. }
  9874. .cm-s-ipython span.cm-tab {
  9875. background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);
  9876. background-position: right;
  9877. background-repeat: no-repeat;
  9878. }
  9879. div.output_wrapper {
  9880. /* this position must be relative to enable descendents to be absolute within it */
  9881. position: relative;
  9882. /* Old browsers */
  9883. display: -webkit-box;
  9884. -webkit-box-orient: vertical;
  9885. -webkit-box-align: stretch;
  9886. display: -moz-box;
  9887. -moz-box-orient: vertical;
  9888. -moz-box-align: stretch;
  9889. display: box;
  9890. box-orient: vertical;
  9891. box-align: stretch;
  9892. /* Modern browsers */
  9893. display: flex;
  9894. flex-direction: column;
  9895. align-items: stretch;
  9896. z-index: 1;
  9897. }
  9898. /* class for the output area when it should be height-limited */
  9899. div.output_scroll {
  9900. /* ideally, this would be max-height, but FF barfs all over that */
  9901. height: 24em;
  9902. /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  9903. width: 100%;
  9904. overflow: auto;
  9905. border-radius: 2px;
  9906. -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  9907. box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  9908. display: block;
  9909. }
  9910. /* output div while it is collapsed */
  9911. div.output_collapsed {
  9912. margin: 0px;
  9913. padding: 0px;
  9914. /* Old browsers */
  9915. display: -webkit-box;
  9916. -webkit-box-orient: vertical;
  9917. -webkit-box-align: stretch;
  9918. display: -moz-box;
  9919. -moz-box-orient: vertical;
  9920. -moz-box-align: stretch;
  9921. display: box;
  9922. box-orient: vertical;
  9923. box-align: stretch;
  9924. /* Modern browsers */
  9925. display: flex;
  9926. flex-direction: column;
  9927. align-items: stretch;
  9928. }
  9929. div.out_prompt_overlay {
  9930. height: 100%;
  9931. padding: 0px 0.4em;
  9932. position: absolute;
  9933. border-radius: 2px;
  9934. }
  9935. div.out_prompt_overlay:hover {
  9936. /* use inner shadow to get border that is computed the same on WebKit/FF */
  9937. -webkit-box-shadow: inset 0 0 1px #000;
  9938. box-shadow: inset 0 0 1px #000;
  9939. background: rgba(240, 240, 240, 0.5);
  9940. }
  9941. div.output_prompt {
  9942. color: #D84315;
  9943. }
  9944. /* This class is the outer container of all output sections. */
  9945. div.output_area {
  9946. padding: 0px;
  9947. page-break-inside: avoid;
  9948. /* Old browsers */
  9949. display: -webkit-box;
  9950. -webkit-box-orient: horizontal;
  9951. -webkit-box-align: stretch;
  9952. display: -moz-box;
  9953. -moz-box-orient: horizontal;
  9954. -moz-box-align: stretch;
  9955. display: box;
  9956. box-orient: horizontal;
  9957. box-align: stretch;
  9958. /* Modern browsers */
  9959. display: flex;
  9960. flex-direction: row;
  9961. align-items: stretch;
  9962. }
  9963. div.output_area .MathJax_Display {
  9964. text-align: left !important;
  9965. }
  9966. div.output_area .rendered_html table {
  9967. margin-left: 0;
  9968. margin-right: 0;
  9969. }
  9970. div.output_area .rendered_html img {
  9971. margin-left: 0;
  9972. margin-right: 0;
  9973. }
  9974. div.output_area img,
  9975. div.output_area svg {
  9976. max-width: 100%;
  9977. height: auto;
  9978. }
  9979. div.output_area img.unconfined,
  9980. div.output_area svg.unconfined {
  9981. max-width: none;
  9982. }
  9983. /* This is needed to protect the pre formating from global settings such
  9984. as that of bootstrap */
  9985. .output {
  9986. /* Old browsers */
  9987. display: -webkit-box;
  9988. -webkit-box-orient: vertical;
  9989. -webkit-box-align: stretch;
  9990. display: -moz-box;
  9991. -moz-box-orient: vertical;
  9992. -moz-box-align: stretch;
  9993. display: box;
  9994. box-orient: vertical;
  9995. box-align: stretch;
  9996. /* Modern browsers */
  9997. display: flex;
  9998. flex-direction: column;
  9999. align-items: stretch;
  10000. }
  10001. @media (max-width: 540px) {
  10002. div.output_area {
  10003. /* Old browsers */
  10004. display: -webkit-box;
  10005. -webkit-box-orient: vertical;
  10006. -webkit-box-align: stretch;
  10007. display: -moz-box;
  10008. -moz-box-orient: vertical;
  10009. -moz-box-align: stretch;
  10010. display: box;
  10011. box-orient: vertical;
  10012. box-align: stretch;
  10013. /* Modern browsers */
  10014. display: flex;
  10015. flex-direction: column;
  10016. align-items: stretch;
  10017. }
  10018. }
  10019. div.output_area pre {
  10020. margin: 0;
  10021. padding: 0;
  10022. border: 0;
  10023. vertical-align: baseline;
  10024. color: black;
  10025. background-color: transparent;
  10026. border-radius: 0;
  10027. }
  10028. /* This class is for the output subarea inside the output_area and after
  10029. the prompt div. */
  10030. div.output_subarea {
  10031. overflow-x: auto;
  10032. padding: 0.4em;
  10033. /* Old browsers */
  10034. -webkit-box-flex: 1;
  10035. -moz-box-flex: 1;
  10036. box-flex: 1;
  10037. /* Modern browsers */
  10038. flex: 1;
  10039. max-width: calc(100% - 14ex);
  10040. }
  10041. div.output_scroll div.output_subarea {
  10042. overflow-x: visible;
  10043. }
  10044. /* The rest of the output_* classes are for special styling of the different
  10045. output types */
  10046. /* all text output has this class: */
  10047. div.output_text {
  10048. text-align: left;
  10049. color: #000;
  10050. /* This has to match that of the the CodeMirror class line-height below */
  10051. line-height: 1.21429em;
  10052. }
  10053. /* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
  10054. div.output_stderr {
  10055. background: #fdd;
  10056. /* very light red background for stderr */
  10057. }
  10058. div.output_latex {
  10059. text-align: left;
  10060. }
  10061. /* Empty output_javascript divs should have no height */
  10062. div.output_javascript:empty {
  10063. padding: 0;
  10064. }
  10065. .js-error {
  10066. color: darkred;
  10067. }
  10068. /* raw_input styles */
  10069. div.raw_input_container {
  10070. line-height: 1.21429em;
  10071. padding-top: 5px;
  10072. }
  10073. pre.raw_input_prompt {
  10074. /* nothing needed here. */
  10075. }
  10076. input.raw_input {
  10077. font-family: monospace;
  10078. font-size: inherit;
  10079. color: inherit;
  10080. width: auto;
  10081. /* make sure input baseline aligns with prompt */
  10082. vertical-align: baseline;
  10083. /* padding + margin = 0.5em between prompt and cursor */
  10084. padding: 0em 0.25em;
  10085. margin: 0em 0.25em;
  10086. }
  10087. input.raw_input:focus {
  10088. box-shadow: none;
  10089. }
  10090. p.p-space {
  10091. margin-bottom: 10px;
  10092. }
  10093. div.output_unrecognized {
  10094. padding: 5px;
  10095. font-weight: bold;
  10096. color: red;
  10097. }
  10098. div.output_unrecognized a {
  10099. color: inherit;
  10100. text-decoration: none;
  10101. }
  10102. div.output_unrecognized a:hover {
  10103. color: inherit;
  10104. text-decoration: none;
  10105. }
  10106. .rendered_html {
  10107. color: #000;
  10108. /* any extras will just be numbers: */
  10109. }
  10110. .rendered_html em {
  10111. font-style: italic;
  10112. }
  10113. .rendered_html strong {
  10114. font-weight: bold;
  10115. }
  10116. .rendered_html u {
  10117. text-decoration: underline;
  10118. }
  10119. .rendered_html :link {
  10120. text-decoration: underline;
  10121. }
  10122. .rendered_html :visited {
  10123. text-decoration: underline;
  10124. }
  10125. .rendered_html h1 {
  10126. font-size: 185.7%;
  10127. margin: 1.08em 0 0 0;
  10128. font-weight: bold;
  10129. line-height: 1.0;
  10130. }
  10131. .rendered_html h2 {
  10132. font-size: 157.1%;
  10133. margin: 1.27em 0 0 0;
  10134. font-weight: bold;
  10135. line-height: 1.0;
  10136. }
  10137. .rendered_html h3 {
  10138. font-size: 128.6%;
  10139. margin: 1.55em 0 0 0;
  10140. font-weight: bold;
  10141. line-height: 1.0;
  10142. }
  10143. .rendered_html h4 {
  10144. font-size: 100%;
  10145. margin: 2em 0 0 0;
  10146. font-weight: bold;
  10147. line-height: 1.0;
  10148. }
  10149. .rendered_html h5 {
  10150. font-size: 100%;
  10151. margin: 2em 0 0 0;
  10152. font-weight: bold;
  10153. line-height: 1.0;
  10154. font-style: italic;
  10155. }
  10156. .rendered_html h6 {
  10157. font-size: 100%;
  10158. margin: 2em 0 0 0;
  10159. font-weight: bold;
  10160. line-height: 1.0;
  10161. font-style: italic;
  10162. }
  10163. .rendered_html h1:first-child {
  10164. margin-top: 0.538em;
  10165. }
  10166. .rendered_html h2:first-child {
  10167. margin-top: 0.636em;
  10168. }
  10169. .rendered_html h3:first-child {
  10170. margin-top: 0.777em;
  10171. }
  10172. .rendered_html h4:first-child {
  10173. margin-top: 1em;
  10174. }
  10175. .rendered_html h5:first-child {
  10176. margin-top: 1em;
  10177. }
  10178. .rendered_html h6:first-child {
  10179. margin-top: 1em;
  10180. }
  10181. .rendered_html ul {
  10182. list-style: disc;
  10183. margin: 0em 2em;
  10184. padding-left: 0px;
  10185. }
  10186. .rendered_html ul ul {
  10187. list-style: square;
  10188. margin: 0em 2em;
  10189. }
  10190. .rendered_html ul ul ul {
  10191. list-style: circle;
  10192. margin: 0em 2em;
  10193. }
  10194. .rendered_html ol {
  10195. list-style: decimal;
  10196. margin: 0em 2em;
  10197. padding-left: 0px;
  10198. }
  10199. .rendered_html ol ol {
  10200. list-style: upper-alpha;
  10201. margin: 0em 2em;
  10202. }
  10203. .rendered_html ol ol ol {
  10204. list-style: lower-alpha;
  10205. margin: 0em 2em;
  10206. }
  10207. .rendered_html ol ol ol ol {
  10208. list-style: lower-roman;
  10209. margin: 0em 2em;
  10210. }
  10211. .rendered_html ol ol ol ol ol {
  10212. list-style: decimal;
  10213. margin: 0em 2em;
  10214. }
  10215. .rendered_html * + ul {
  10216. margin-top: 1em;
  10217. }
  10218. .rendered_html * + ol {
  10219. margin-top: 1em;
  10220. }
  10221. .rendered_html hr {
  10222. color: black;
  10223. background-color: black;
  10224. }
  10225. .rendered_html pre {
  10226. margin: 1em 2em;
  10227. }
  10228. .rendered_html pre,
  10229. .rendered_html code {
  10230. border: 0;
  10231. background-color: #fff;
  10232. color: #000;
  10233. font-size: 100%;
  10234. padding: 0px;
  10235. }
  10236. .rendered_html blockquote {
  10237. margin: 1em 2em;
  10238. }
  10239. .rendered_html table {
  10240. margin-left: auto;
  10241. margin-right: auto;
  10242. border: 1px solid black;
  10243. border-collapse: collapse;
  10244. }
  10245. .rendered_html tr,
  10246. .rendered_html th,
  10247. .rendered_html td {
  10248. border: 1px solid black;
  10249. border-collapse: collapse;
  10250. margin: 1em 2em;
  10251. }
  10252. .rendered_html td,
  10253. .rendered_html th {
  10254. text-align: left;
  10255. vertical-align: middle;
  10256. padding: 4px;
  10257. }
  10258. .rendered_html th {
  10259. font-weight: bold;
  10260. }
  10261. .rendered_html * + table {
  10262. margin-top: 1em;
  10263. }
  10264. .rendered_html p {
  10265. text-align: left;
  10266. }
  10267. .rendered_html * + p {
  10268. margin-top: 1em;
  10269. }
  10270. .rendered_html img {
  10271. display: block;
  10272. margin-left: auto;
  10273. margin-right: auto;
  10274. }
  10275. .rendered_html * + img {
  10276. margin-top: 1em;
  10277. }
  10278. .rendered_html img,
  10279. .rendered_html svg {
  10280. max-width: 100%;
  10281. height: auto;
  10282. }
  10283. .rendered_html img.unconfined,
  10284. .rendered_html svg.unconfined {
  10285. max-width: none;
  10286. }
  10287. div.text_cell {
  10288. /* Old browsers */
  10289. display: -webkit-box;
  10290. -webkit-box-orient: horizontal;
  10291. -webkit-box-align: stretch;
  10292. display: -moz-box;
  10293. -moz-box-orient: horizontal;
  10294. -moz-box-align: stretch;
  10295. display: box;
  10296. box-orient: horizontal;
  10297. box-align: stretch;
  10298. /* Modern browsers */
  10299. display: flex;
  10300. flex-direction: row;
  10301. align-items: stretch;
  10302. }
  10303. @media (max-width: 540px) {
  10304. div.text_cell > div.prompt {
  10305. display: none;
  10306. }
  10307. }
  10308. div.text_cell_render {
  10309. /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  10310. outline: none;
  10311. resize: none;
  10312. width: inherit;
  10313. border-style: none;
  10314. padding: 0.5em 0.5em 0.5em 0.4em;
  10315. color: #000;
  10316. box-sizing: border-box;
  10317. -moz-box-sizing: border-box;
  10318. -webkit-box-sizing: border-box;
  10319. }
  10320. a.anchor-link:link {
  10321. text-decoration: none;
  10322. padding: 0px 20px;
  10323. visibility: hidden;
  10324. }
  10325. h1:hover .anchor-link,
  10326. h2:hover .anchor-link,
  10327. h3:hover .anchor-link,
  10328. h4:hover .anchor-link,
  10329. h5:hover .anchor-link,
  10330. h6:hover .anchor-link {
  10331. visibility: visible;
  10332. }
  10333. .text_cell.rendered .input_area {
  10334. display: none;
  10335. }
  10336. .text_cell.rendered .rendered_html {
  10337. overflow-x: auto;
  10338. overflow-y: hidden;
  10339. }
  10340. .text_cell.unrendered .text_cell_render {
  10341. display: none;
  10342. }
  10343. .cm-header-1,
  10344. .cm-header-2,
  10345. .cm-header-3,
  10346. .cm-header-4,
  10347. .cm-header-5,
  10348. .cm-header-6 {
  10349. font-weight: bold;
  10350. font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  10351. }
  10352. .cm-header-1 {
  10353. font-size: 185.7%;
  10354. }
  10355. .cm-header-2 {
  10356. font-size: 157.1%;
  10357. }
  10358. .cm-header-3 {
  10359. font-size: 128.6%;
  10360. }
  10361. .cm-header-4 {
  10362. font-size: 110%;
  10363. }
  10364. .cm-header-5 {
  10365. font-size: 100%;
  10366. font-style: italic;
  10367. }
  10368. .cm-header-6 {
  10369. font-size: 100%;
  10370. font-style: italic;
  10371. }
  10372. /*!
  10373. *
  10374. * IPython notebook webapp
  10375. *
  10376. */
  10377. @media (max-width: 767px) {
  10378. .notebook_app {
  10379. padding-left: 0px;
  10380. padding-right: 0px;
  10381. }
  10382. }
  10383. #ipython-main-app {
  10384. box-sizing: border-box;
  10385. -moz-box-sizing: border-box;
  10386. -webkit-box-sizing: border-box;
  10387. height: 100%;
  10388. }
  10389. div#notebook_panel {
  10390. margin: 0px;
  10391. padding: 0px;
  10392. box-sizing: border-box;
  10393. -moz-box-sizing: border-box;
  10394. -webkit-box-sizing: border-box;
  10395. height: 100%;
  10396. }
  10397. div#notebook {
  10398. font-size: 14px;
  10399. line-height: 20px;
  10400. overflow-y: hidden;
  10401. overflow-x: auto;
  10402. width: 100%;
  10403. /* This spaces the page away from the edge of the notebook area */
  10404. padding-top: 20px;
  10405. margin: 0px;
  10406. outline: none;
  10407. box-sizing: border-box;
  10408. -moz-box-sizing: border-box;
  10409. -webkit-box-sizing: border-box;
  10410. min-height: 100%;
  10411. }
  10412. @media not print {
  10413. #notebook-container {
  10414. padding: 15px;
  10415. background-color: #fff;
  10416. min-height: 0;
  10417. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  10418. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  10419. }
  10420. }
  10421. @media print {
  10422. #notebook-container {
  10423. width: 100%;
  10424. }
  10425. }
  10426. div.ui-widget-content {
  10427. border: 1px solid #ababab;
  10428. outline: none;
  10429. }
  10430. pre.dialog {
  10431. background-color: #f7f7f7;
  10432. border: 1px solid #ddd;
  10433. border-radius: 2px;
  10434. padding: 0.4em;
  10435. padding-left: 2em;
  10436. }
  10437. p.dialog {
  10438. padding: 0.2em;
  10439. }
  10440. /* Word-wrap output correctly. This is the CSS3 spelling, though Firefox seems
  10441. to not honor it correctly. Webkit browsers (Chrome, rekonq, Safari) do.
  10442. */
  10443. pre,
  10444. code,
  10445. kbd,
  10446. samp {
  10447. white-space: pre-wrap;
  10448. }
  10449. #fonttest {
  10450. font-family: monospace;
  10451. }
  10452. p {
  10453. margin-bottom: 0;
  10454. }
  10455. .end_space {
  10456. min-height: 100px;
  10457. transition: height .2s ease;
  10458. }
  10459. .notebook_app > #header {
  10460. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  10461. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  10462. }
  10463. @media not print {
  10464. .notebook_app {
  10465. background-color: #EEE;
  10466. }
  10467. }
  10468. kbd {
  10469. border-style: solid;
  10470. border-width: 1px;
  10471. box-shadow: none;
  10472. margin: 2px;
  10473. padding-left: 2px;
  10474. padding-right: 2px;
  10475. padding-top: 1px;
  10476. padding-bottom: 1px;
  10477. }
  10478. /* CSS for the cell toolbar */
  10479. .celltoolbar {
  10480. border: thin solid #CFCFCF;
  10481. border-bottom: none;
  10482. background: #EEE;
  10483. border-radius: 2px 2px 0px 0px;
  10484. width: 100%;
  10485. height: 29px;
  10486. padding-right: 4px;
  10487. /* Old browsers */
  10488. display: -webkit-box;
  10489. -webkit-box-orient: horizontal;
  10490. -webkit-box-align: stretch;
  10491. display: -moz-box;
  10492. -moz-box-orient: horizontal;
  10493. -moz-box-align: stretch;
  10494. display: box;
  10495. box-orient: horizontal;
  10496. box-align: stretch;
  10497. /* Modern browsers */
  10498. display: flex;
  10499. flex-direction: row;
  10500. align-items: stretch;
  10501. /* Old browsers */
  10502. -webkit-box-pack: end;
  10503. -moz-box-pack: end;
  10504. box-pack: end;
  10505. /* Modern browsers */
  10506. justify-content: flex-end;
  10507. display: -webkit-flex;
  10508. }
  10509. @media print {
  10510. .celltoolbar {
  10511. display: none;
  10512. }
  10513. }
  10514. .ctb_hideshow {
  10515. display: none;
  10516. vertical-align: bottom;
  10517. }
  10518. /* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
  10519. Cell toolbars are only shown when the ctb_global_show class is also set.
  10520. */
  10521. .ctb_global_show .ctb_show.ctb_hideshow {
  10522. display: block;
  10523. }
  10524. .ctb_global_show .ctb_show + .input_area,
  10525. .ctb_global_show .ctb_show + div.text_cell_input,
  10526. .ctb_global_show .ctb_show ~ div.text_cell_render {
  10527. border-top-right-radius: 0px;
  10528. border-top-left-radius: 0px;
  10529. }
  10530. .ctb_global_show .ctb_show ~ div.text_cell_render {
  10531. border: 1px solid #cfcfcf;
  10532. }
  10533. .celltoolbar {
  10534. font-size: 87%;
  10535. padding-top: 3px;
  10536. }
  10537. .celltoolbar select {
  10538. display: block;
  10539. width: 100%;
  10540. height: 32px;
  10541. padding: 6px 12px;
  10542. font-size: 13px;
  10543. line-height: 1.42857143;
  10544. color: #555555;
  10545. background-color: #fff;
  10546. background-image: none;
  10547. border: 1px solid #ccc;
  10548. border-radius: 2px;
  10549. -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  10550. box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  10551. -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  10552. -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  10553. transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  10554. height: 30px;
  10555. padding: 5px 10px;
  10556. font-size: 12px;
  10557. line-height: 1.5;
  10558. border-radius: 1px;
  10559. width: inherit;
  10560. font-size: inherit;
  10561. height: 22px;
  10562. padding: 0px;
  10563. display: inline-block;
  10564. }
  10565. .celltoolbar select:focus {
  10566. border-color: #66afe9;
  10567. outline: 0;
  10568. -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  10569. box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  10570. }
  10571. .celltoolbar select::-moz-placeholder {
  10572. color: #999;
  10573. opacity: 1;
  10574. }
  10575. .celltoolbar select:-ms-input-placeholder {
  10576. color: #999;
  10577. }
  10578. .celltoolbar select::-webkit-input-placeholder {
  10579. color: #999;
  10580. }
  10581. .celltoolbar select::-ms-expand {
  10582. border: 0;
  10583. background-color: transparent;
  10584. }
  10585. .celltoolbar select[disabled],
  10586. .celltoolbar select[readonly],
  10587. fieldset[disabled] .celltoolbar select {
  10588. background-color: #eeeeee;
  10589. opacity: 1;
  10590. }
  10591. .celltoolbar select[disabled],
  10592. fieldset[disabled] .celltoolbar select {
  10593. cursor: not-allowed;
  10594. }
  10595. textarea.celltoolbar select {
  10596. height: auto;
  10597. }
  10598. select.celltoolbar select {
  10599. height: 30px;
  10600. line-height: 30px;
  10601. }
  10602. textarea.celltoolbar select,
  10603. select[multiple].celltoolbar select {
  10604. height: auto;
  10605. }
  10606. .celltoolbar label {
  10607. margin-left: 5px;
  10608. margin-right: 5px;
  10609. }
  10610. .completions {
  10611. position: absolute;
  10612. z-index: 110;
  10613. overflow: hidden;
  10614. border: 1px solid #ababab;
  10615. border-radius: 2px;
  10616. -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  10617. box-shadow: 0px 6px 10px -1px #adadad;
  10618. line-height: 1;
  10619. }
  10620. .completions select {
  10621. background: white;
  10622. outline: none;
  10623. border: none;
  10624. padding: 0px;
  10625. margin: 0px;
  10626. overflow: auto;
  10627. font-family: monospace;
  10628. font-size: 110%;
  10629. color: #000;
  10630. width: auto;
  10631. }
  10632. .completions select option.context {
  10633. color: #286090;
  10634. }
  10635. #kernel_logo_widget {
  10636. float: right !important;
  10637. float: right;
  10638. }
  10639. #kernel_logo_widget .current_kernel_logo {
  10640. display: none;
  10641. margin-top: -1px;
  10642. margin-bottom: -1px;
  10643. width: 32px;
  10644. height: 32px;
  10645. }
  10646. #menubar {
  10647. box-sizing: border-box;
  10648. -moz-box-sizing: border-box;
  10649. -webkit-box-sizing: border-box;
  10650. margin-top: 1px;
  10651. }
  10652. #menubar .navbar {
  10653. border-top: 1px;
  10654. border-radius: 0px 0px 2px 2px;
  10655. margin-bottom: 0px;
  10656. }
  10657. #menubar .navbar-toggle {
  10658. float: left;
  10659. padding-top: 7px;
  10660. padding-bottom: 7px;
  10661. border: none;
  10662. }
  10663. #menubar .navbar-collapse {
  10664. clear: left;
  10665. }
  10666. .nav-wrapper {
  10667. border-bottom: 1px solid #e7e7e7;
  10668. }
  10669. i.menu-icon {
  10670. padding-top: 4px;
  10671. }
  10672. ul#help_menu li a {
  10673. overflow: hidden;
  10674. padding-right: 2.2em;
  10675. }
  10676. ul#help_menu li a i {
  10677. margin-right: -1.2em;
  10678. }
  10679. .dropdown-submenu {
  10680. position: relative;
  10681. }
  10682. .dropdown-submenu > .dropdown-menu {
  10683. top: 0;
  10684. left: 100%;
  10685. margin-top: -6px;
  10686. margin-left: -1px;
  10687. }
  10688. .dropdown-submenu:hover > .dropdown-menu {
  10689. display: block;
  10690. }
  10691. .dropdown-submenu > a:after {
  10692. display: inline-block;
  10693. font: normal normal normal 14px/1 FontAwesome;
  10694. font-size: inherit;
  10695. text-rendering: auto;
  10696. -webkit-font-smoothing: antialiased;
  10697. -moz-osx-font-smoothing: grayscale;
  10698. display: block;
  10699. content: "\f0da";
  10700. float: right;
  10701. color: #333333;
  10702. margin-top: 2px;
  10703. margin-right: -10px;
  10704. }
  10705. .dropdown-submenu > a:after.pull-left {
  10706. margin-right: .3em;
  10707. }
  10708. .dropdown-submenu > a:after.pull-right {
  10709. margin-left: .3em;
  10710. }
  10711. .dropdown-submenu:hover > a:after {
  10712. color: #262626;
  10713. }
  10714. .dropdown-submenu.pull-left {
  10715. float: none;
  10716. }
  10717. .dropdown-submenu.pull-left > .dropdown-menu {
  10718. left: -100%;
  10719. margin-left: 10px;
  10720. }
  10721. #notification_area {
  10722. float: right !important;
  10723. float: right;
  10724. z-index: 10;
  10725. }
  10726. .indicator_area {
  10727. float: right !important;
  10728. float: right;
  10729. color: #777;
  10730. margin-left: 5px;
  10731. margin-right: 5px;
  10732. width: 11px;
  10733. z-index: 10;
  10734. text-align: center;
  10735. width: auto;
  10736. }
  10737. #kernel_indicator {
  10738. float: right !important;
  10739. float: right;
  10740. color: #777;
  10741. margin-left: 5px;
  10742. margin-right: 5px;
  10743. width: 11px;
  10744. z-index: 10;
  10745. text-align: center;
  10746. width: auto;
  10747. border-left: 1px solid;
  10748. }
  10749. #kernel_indicator .kernel_indicator_name {
  10750. padding-left: 5px;
  10751. padding-right: 5px;
  10752. }
  10753. #modal_indicator {
  10754. float: right !important;
  10755. float: right;
  10756. color: #777;
  10757. margin-left: 5px;
  10758. margin-right: 5px;
  10759. width: 11px;
  10760. z-index: 10;
  10761. text-align: center;
  10762. width: auto;
  10763. }
  10764. #readonly-indicator {
  10765. float: right !important;
  10766. float: right;
  10767. color: #777;
  10768. margin-left: 5px;
  10769. margin-right: 5px;
  10770. width: 11px;
  10771. z-index: 10;
  10772. text-align: center;
  10773. width: auto;
  10774. margin-top: 2px;
  10775. margin-bottom: 0px;
  10776. margin-left: 0px;
  10777. margin-right: 0px;
  10778. display: none;
  10779. }
  10780. .modal_indicator:before {
  10781. width: 1.28571429em;
  10782. text-align: center;
  10783. }
  10784. .edit_mode .modal_indicator:before {
  10785. display: inline-block;
  10786. font: normal normal normal 14px/1 FontAwesome;
  10787. font-size: inherit;
  10788. text-rendering: auto;
  10789. -webkit-font-smoothing: antialiased;
  10790. -moz-osx-font-smoothing: grayscale;
  10791. content: "\f040";
  10792. }
  10793. .edit_mode .modal_indicator:before.pull-left {
  10794. margin-right: .3em;
  10795. }
  10796. .edit_mode .modal_indicator:before.pull-right {
  10797. margin-left: .3em;
  10798. }
  10799. .command_mode .modal_indicator:before {
  10800. display: inline-block;
  10801. font: normal normal normal 14px/1 FontAwesome;
  10802. font-size: inherit;
  10803. text-rendering: auto;
  10804. -webkit-font-smoothing: antialiased;
  10805. -moz-osx-font-smoothing: grayscale;
  10806. content: ' ';
  10807. }
  10808. .command_mode .modal_indicator:before.pull-left {
  10809. margin-right: .3em;
  10810. }
  10811. .command_mode .modal_indicator:before.pull-right {
  10812. margin-left: .3em;
  10813. }
  10814. .kernel_idle_icon:before {
  10815. display: inline-block;
  10816. font: normal normal normal 14px/1 FontAwesome;
  10817. font-size: inherit;
  10818. text-rendering: auto;
  10819. -webkit-font-smoothing: antialiased;
  10820. -moz-osx-font-smoothing: grayscale;
  10821. content: "\f10c";
  10822. }
  10823. .kernel_idle_icon:before.pull-left {
  10824. margin-right: .3em;
  10825. }
  10826. .kernel_idle_icon:before.pull-right {
  10827. margin-left: .3em;
  10828. }
  10829. .kernel_busy_icon:before {
  10830. display: inline-block;
  10831. font: normal normal normal 14px/1 FontAwesome;
  10832. font-size: inherit;
  10833. text-rendering: auto;
  10834. -webkit-font-smoothing: antialiased;
  10835. -moz-osx-font-smoothing: grayscale;
  10836. content: "\f111";
  10837. }
  10838. .kernel_busy_icon:before.pull-left {
  10839. margin-right: .3em;
  10840. }
  10841. .kernel_busy_icon:before.pull-right {
  10842. margin-left: .3em;
  10843. }
  10844. .kernel_dead_icon:before {
  10845. display: inline-block;
  10846. font: normal normal normal 14px/1 FontAwesome;
  10847. font-size: inherit;
  10848. text-rendering: auto;
  10849. -webkit-font-smoothing: antialiased;
  10850. -moz-osx-font-smoothing: grayscale;
  10851. content: "\f1e2";
  10852. }
  10853. .kernel_dead_icon:before.pull-left {
  10854. margin-right: .3em;
  10855. }
  10856. .kernel_dead_icon:before.pull-right {
  10857. margin-left: .3em;
  10858. }
  10859. .kernel_disconnected_icon:before {
  10860. display: inline-block;
  10861. font: normal normal normal 14px/1 FontAwesome;
  10862. font-size: inherit;
  10863. text-rendering: auto;
  10864. -webkit-font-smoothing: antialiased;
  10865. -moz-osx-font-smoothing: grayscale;
  10866. content: "\f127";
  10867. }
  10868. .kernel_disconnected_icon:before.pull-left {
  10869. margin-right: .3em;
  10870. }
  10871. .kernel_disconnected_icon:before.pull-right {
  10872. margin-left: .3em;
  10873. }
  10874. .notification_widget {
  10875. color: #777;
  10876. z-index: 10;
  10877. background: rgba(240, 240, 240, 0.5);
  10878. margin-right: 4px;
  10879. color: #333;
  10880. background-color: #fff;
  10881. border-color: #ccc;
  10882. }
  10883. .notification_widget:focus,
  10884. .notification_widget.focus {
  10885. color: #333;
  10886. background-color: #e6e6e6;
  10887. border-color: #8c8c8c;
  10888. }
  10889. .notification_widget:hover {
  10890. color: #333;
  10891. background-color: #e6e6e6;
  10892. border-color: #adadad;
  10893. }
  10894. .notification_widget:active,
  10895. .notification_widget.active,
  10896. .open > .dropdown-toggle.notification_widget {
  10897. color: #333;
  10898. background-color: #e6e6e6;
  10899. border-color: #adadad;
  10900. }
  10901. .notification_widget:active:hover,
  10902. .notification_widget.active:hover,
  10903. .open > .dropdown-toggle.notification_widget:hover,
  10904. .notification_widget:active:focus,
  10905. .notification_widget.active:focus,
  10906. .open > .dropdown-toggle.notification_widget:focus,
  10907. .notification_widget:active.focus,
  10908. .notification_widget.active.focus,
  10909. .open > .dropdown-toggle.notification_widget.focus {
  10910. color: #333;
  10911. background-color: #d4d4d4;
  10912. border-color: #8c8c8c;
  10913. }
  10914. .notification_widget:active,
  10915. .notification_widget.active,
  10916. .open > .dropdown-toggle.notification_widget {
  10917. background-image: none;
  10918. }
  10919. .notification_widget.disabled:hover,
  10920. .notification_widget[disabled]:hover,
  10921. fieldset[disabled] .notification_widget:hover,
  10922. .notification_widget.disabled:focus,
  10923. .notification_widget[disabled]:focus,
  10924. fieldset[disabled] .notification_widget:focus,
  10925. .notification_widget.disabled.focus,
  10926. .notification_widget[disabled].focus,
  10927. fieldset[disabled] .notification_widget.focus {
  10928. background-color: #fff;
  10929. border-color: #ccc;
  10930. }
  10931. .notification_widget .badge {
  10932. color: #fff;
  10933. background-color: #333;
  10934. }
  10935. .notification_widget.warning {
  10936. color: #fff;
  10937. background-color: #f0ad4e;
  10938. border-color: #eea236;
  10939. }
  10940. .notification_widget.warning:focus,
  10941. .notification_widget.warning.focus {
  10942. color: #fff;
  10943. background-color: #ec971f;
  10944. border-color: #985f0d;
  10945. }
  10946. .notification_widget.warning:hover {
  10947. color: #fff;
  10948. background-color: #ec971f;
  10949. border-color: #d58512;
  10950. }
  10951. .notification_widget.warning:active,
  10952. .notification_widget.warning.active,
  10953. .open > .dropdown-toggle.notification_widget.warning {
  10954. color: #fff;
  10955. background-color: #ec971f;
  10956. border-color: #d58512;
  10957. }
  10958. .notification_widget.warning:active:hover,
  10959. .notification_widget.warning.active:hover,
  10960. .open > .dropdown-toggle.notification_widget.warning:hover,
  10961. .notification_widget.warning:active:focus,
  10962. .notification_widget.warning.active:focus,
  10963. .open > .dropdown-toggle.notification_widget.warning:focus,
  10964. .notification_widget.warning:active.focus,
  10965. .notification_widget.warning.active.focus,
  10966. .open > .dropdown-toggle.notification_widget.warning.focus {
  10967. color: #fff;
  10968. background-color: #d58512;
  10969. border-color: #985f0d;
  10970. }
  10971. .notification_widget.warning:active,
  10972. .notification_widget.warning.active,
  10973. .open > .dropdown-toggle.notification_widget.warning {
  10974. background-image: none;
  10975. }
  10976. .notification_widget.warning.disabled:hover,
  10977. .notification_widget.warning[disabled]:hover,
  10978. fieldset[disabled] .notification_widget.warning:hover,
  10979. .notification_widget.warning.disabled:focus,
  10980. .notification_widget.warning[disabled]:focus,
  10981. fieldset[disabled] .notification_widget.warning:focus,
  10982. .notification_widget.warning.disabled.focus,
  10983. .notification_widget.warning[disabled].focus,
  10984. fieldset[disabled] .notification_widget.warning.focus {
  10985. background-color: #f0ad4e;
  10986. border-color: #eea236;
  10987. }
  10988. .notification_widget.warning .badge {
  10989. color: #f0ad4e;
  10990. background-color: #fff;
  10991. }
  10992. .notification_widget.success {
  10993. color: #fff;
  10994. background-color: #5cb85c;
  10995. border-color: #4cae4c;
  10996. }
  10997. .notification_widget.success:focus,
  10998. .notification_widget.success.focus {
  10999. color: #fff;
  11000. background-color: #449d44;
  11001. border-color: #255625;
  11002. }
  11003. .notification_widget.success:hover {
  11004. color: #fff;
  11005. background-color: #449d44;
  11006. border-color: #398439;
  11007. }
  11008. .notification_widget.success:active,
  11009. .notification_widget.success.active,
  11010. .open > .dropdown-toggle.notification_widget.success {
  11011. color: #fff;
  11012. background-color: #449d44;
  11013. border-color: #398439;
  11014. }
  11015. .notification_widget.success:active:hover,
  11016. .notification_widget.success.active:hover,
  11017. .open > .dropdown-toggle.notification_widget.success:hover,
  11018. .notification_widget.success:active:focus,
  11019. .notification_widget.success.active:focus,
  11020. .open > .dropdown-toggle.notification_widget.success:focus,
  11021. .notification_widget.success:active.focus,
  11022. .notification_widget.success.active.focus,
  11023. .open > .dropdown-toggle.notification_widget.success.focus {
  11024. color: #fff;
  11025. background-color: #398439;
  11026. border-color: #255625;
  11027. }
  11028. .notification_widget.success:active,
  11029. .notification_widget.success.active,
  11030. .open > .dropdown-toggle.notification_widget.success {
  11031. background-image: none;
  11032. }
  11033. .notification_widget.success.disabled:hover,
  11034. .notification_widget.success[disabled]:hover,
  11035. fieldset[disabled] .notification_widget.success:hover,
  11036. .notification_widget.success.disabled:focus,
  11037. .notification_widget.success[disabled]:focus,
  11038. fieldset[disabled] .notification_widget.success:focus,
  11039. .notification_widget.success.disabled.focus,
  11040. .notification_widget.success[disabled].focus,
  11041. fieldset[disabled] .notification_widget.success.focus {
  11042. background-color: #5cb85c;
  11043. border-color: #4cae4c;
  11044. }
  11045. .notification_widget.success .badge {
  11046. color: #5cb85c;
  11047. background-color: #fff;
  11048. }
  11049. .notification_widget.info {
  11050. color: #fff;
  11051. background-color: #5bc0de;
  11052. border-color: #46b8da;
  11053. }
  11054. .notification_widget.info:focus,
  11055. .notification_widget.info.focus {
  11056. color: #fff;
  11057. background-color: #31b0d5;
  11058. border-color: #1b6d85;
  11059. }
  11060. .notification_widget.info:hover {
  11061. color: #fff;
  11062. background-color: #31b0d5;
  11063. border-color: #269abc;
  11064. }
  11065. .notification_widget.info:active,
  11066. .notification_widget.info.active,
  11067. .open > .dropdown-toggle.notification_widget.info {
  11068. color: #fff;
  11069. background-color: #31b0d5;
  11070. border-color: #269abc;
  11071. }
  11072. .notification_widget.info:active:hover,
  11073. .notification_widget.info.active:hover,
  11074. .open > .dropdown-toggle.notification_widget.info:hover,
  11075. .notification_widget.info:active:focus,
  11076. .notification_widget.info.active:focus,
  11077. .open > .dropdown-toggle.notification_widget.info:focus,
  11078. .notification_widget.info:active.focus,
  11079. .notification_widget.info.active.focus,
  11080. .open > .dropdown-toggle.notification_widget.info.focus {
  11081. color: #fff;
  11082. background-color: #269abc;
  11083. border-color: #1b6d85;
  11084. }
  11085. .notification_widget.info:active,
  11086. .notification_widget.info.active,
  11087. .open > .dropdown-toggle.notification_widget.info {
  11088. background-image: none;
  11089. }
  11090. .notification_widget.info.disabled:hover,
  11091. .notification_widget.info[disabled]:hover,
  11092. fieldset[disabled] .notification_widget.info:hover,
  11093. .notification_widget.info.disabled:focus,
  11094. .notification_widget.info[disabled]:focus,
  11095. fieldset[disabled] .notification_widget.info:focus,
  11096. .notification_widget.info.disabled.focus,
  11097. .notification_widget.info[disabled].focus,
  11098. fieldset[disabled] .notification_widget.info.focus {
  11099. background-color: #5bc0de;
  11100. border-color: #46b8da;
  11101. }
  11102. .notification_widget.info .badge {
  11103. color: #5bc0de;
  11104. background-color: #fff;
  11105. }
  11106. .notification_widget.danger {
  11107. color: #fff;
  11108. background-color: #d9534f;
  11109. border-color: #d43f3a;
  11110. }
  11111. .notification_widget.danger:focus,
  11112. .notification_widget.danger.focus {
  11113. color: #fff;
  11114. background-color: #c9302c;
  11115. border-color: #761c19;
  11116. }
  11117. .notification_widget.danger:hover {
  11118. color: #fff;
  11119. background-color: #c9302c;
  11120. border-color: #ac2925;
  11121. }
  11122. .notification_widget.danger:active,
  11123. .notification_widget.danger.active,
  11124. .open > .dropdown-toggle.notification_widget.danger {
  11125. color: #fff;
  11126. background-color: #c9302c;
  11127. border-color: #ac2925;
  11128. }
  11129. .notification_widget.danger:active:hover,
  11130. .notification_widget.danger.active:hover,
  11131. .open > .dropdown-toggle.notification_widget.danger:hover,
  11132. .notification_widget.danger:active:focus,
  11133. .notification_widget.danger.active:focus,
  11134. .open > .dropdown-toggle.notification_widget.danger:focus,
  11135. .notification_widget.danger:active.focus,
  11136. .notification_widget.danger.active.focus,
  11137. .open > .dropdown-toggle.notification_widget.danger.focus {
  11138. color: #fff;
  11139. background-color: #ac2925;
  11140. border-color: #761c19;
  11141. }
  11142. .notification_widget.danger:active,
  11143. .notification_widget.danger.active,
  11144. .open > .dropdown-toggle.notification_widget.danger {
  11145. background-image: none;
  11146. }
  11147. .notification_widget.danger.disabled:hover,
  11148. .notification_widget.danger[disabled]:hover,
  11149. fieldset[disabled] .notification_widget.danger:hover,
  11150. .notification_widget.danger.disabled:focus,
  11151. .notification_widget.danger[disabled]:focus,
  11152. fieldset[disabled] .notification_widget.danger:focus,
  11153. .notification_widget.danger.disabled.focus,
  11154. .notification_widget.danger[disabled].focus,
  11155. fieldset[disabled] .notification_widget.danger.focus {
  11156. background-color: #d9534f;
  11157. border-color: #d43f3a;
  11158. }
  11159. .notification_widget.danger .badge {
  11160. color: #d9534f;
  11161. background-color: #fff;
  11162. }
  11163. div#pager {
  11164. background-color: #fff;
  11165. font-size: 14px;
  11166. line-height: 20px;
  11167. overflow: hidden;
  11168. display: none;
  11169. position: fixed;
  11170. bottom: 0px;
  11171. width: 100%;
  11172. max-height: 50%;
  11173. padding-top: 8px;
  11174. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  11175. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  11176. /* Display over codemirror */
  11177. z-index: 100;
  11178. /* Hack which prevents jquery ui resizable from changing top. */
  11179. top: auto !important;
  11180. }
  11181. div#pager pre {
  11182. line-height: 1.21429em;
  11183. color: #000;
  11184. background-color: #f7f7f7;
  11185. padding: 0.4em;
  11186. }
  11187. div#pager #pager-button-area {
  11188. position: absolute;
  11189. top: 8px;
  11190. right: 20px;
  11191. }
  11192. div#pager #pager-contents {
  11193. position: relative;
  11194. overflow: auto;
  11195. width: 100%;
  11196. height: 100%;
  11197. }
  11198. div#pager #pager-contents #pager-container {
  11199. position: relative;
  11200. padding: 15px 0px;
  11201. box-sizing: border-box;
  11202. -moz-box-sizing: border-box;
  11203. -webkit-box-sizing: border-box;
  11204. }
  11205. div#pager .ui-resizable-handle {
  11206. top: 0px;
  11207. height: 8px;
  11208. background: #f7f7f7;
  11209. border-top: 1px solid #cfcfcf;
  11210. border-bottom: 1px solid #cfcfcf;
  11211. /* This injects handle bars (a short, wide = symbol) for
  11212. the resize handle. */
  11213. }
  11214. div#pager .ui-resizable-handle::after {
  11215. content: '';
  11216. top: 2px;
  11217. left: 50%;
  11218. height: 3px;
  11219. width: 30px;
  11220. margin-left: -15px;
  11221. position: absolute;
  11222. border-top: 1px solid #cfcfcf;
  11223. }
  11224. .quickhelp {
  11225. /* Old browsers */
  11226. display: -webkit-box;
  11227. -webkit-box-orient: horizontal;
  11228. -webkit-box-align: stretch;
  11229. display: -moz-box;
  11230. -moz-box-orient: horizontal;
  11231. -moz-box-align: stretch;
  11232. display: box;
  11233. box-orient: horizontal;
  11234. box-align: stretch;
  11235. /* Modern browsers */
  11236. display: flex;
  11237. flex-direction: row;
  11238. align-items: stretch;
  11239. line-height: 1.8em;
  11240. }
  11241. .shortcut_key {
  11242. display: inline-block;
  11243. width: 20ex;
  11244. text-align: right;
  11245. font-family: monospace;
  11246. }
  11247. .shortcut_descr {
  11248. display: inline-block;
  11249. /* Old browsers */
  11250. -webkit-box-flex: 1;
  11251. -moz-box-flex: 1;
  11252. box-flex: 1;
  11253. /* Modern browsers */
  11254. flex: 1;
  11255. }
  11256. span.save_widget {
  11257. margin-top: 6px;
  11258. }
  11259. span.save_widget span.filename {
  11260. height: 1em;
  11261. line-height: 1em;
  11262. padding: 3px;
  11263. margin-left: 16px;
  11264. border: none;
  11265. font-size: 146.5%;
  11266. border-radius: 2px;
  11267. }
  11268. span.save_widget span.filename:hover {
  11269. background-color: #e6e6e6;
  11270. }
  11271. span.checkpoint_status,
  11272. span.autosave_status {
  11273. font-size: small;
  11274. }
  11275. @media (max-width: 767px) {
  11276. span.save_widget {
  11277. font-size: small;
  11278. }
  11279. span.checkpoint_status,
  11280. span.autosave_status {
  11281. display: none;
  11282. }
  11283. }
  11284. @media (min-width: 768px) and (max-width: 991px) {
  11285. span.checkpoint_status {
  11286. display: none;
  11287. }
  11288. span.autosave_status {
  11289. font-size: x-small;
  11290. }
  11291. }
  11292. .toolbar {
  11293. padding: 0px;
  11294. margin-left: -5px;
  11295. margin-top: 2px;
  11296. margin-bottom: 5px;
  11297. box-sizing: border-box;
  11298. -moz-box-sizing: border-box;
  11299. -webkit-box-sizing: border-box;
  11300. }
  11301. .toolbar select,
  11302. .toolbar label {
  11303. width: auto;
  11304. vertical-align: middle;
  11305. margin-right: 2px;
  11306. margin-bottom: 0px;
  11307. display: inline;
  11308. font-size: 92%;
  11309. margin-left: 0.3em;
  11310. margin-right: 0.3em;
  11311. padding: 0px;
  11312. padding-top: 3px;
  11313. }
  11314. .toolbar .btn {
  11315. padding: 2px 8px;
  11316. }
  11317. .toolbar .btn-group {
  11318. margin-top: 0px;
  11319. margin-left: 5px;
  11320. }
  11321. #maintoolbar {
  11322. margin-bottom: -3px;
  11323. margin-top: -8px;
  11324. border: 0px;
  11325. min-height: 27px;
  11326. margin-left: 0px;
  11327. padding-top: 11px;
  11328. padding-bottom: 3px;
  11329. }
  11330. #maintoolbar .navbar-text {
  11331. float: none;
  11332. vertical-align: middle;
  11333. text-align: right;
  11334. margin-left: 5px;
  11335. margin-right: 0px;
  11336. margin-top: 0px;
  11337. }
  11338. .select-xs {
  11339. height: 24px;
  11340. }
  11341. .pulse,
  11342. .dropdown-menu > li > a.pulse,
  11343. li.pulse > a.dropdown-toggle,
  11344. li.pulse.open > a.dropdown-toggle {
  11345. background-color: #F37626;
  11346. color: white;
  11347. }
  11348. /**
  11349. * Primary styles
  11350. *
  11351. * Author: Jupyter Development Team
  11352. */
  11353. /** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
  11354. * of chance of beeing generated from the ../less/[samename].less file, you can
  11355. * try to get back the less file by reverting somme commit in history
  11356. **/
  11357. /*
  11358. * We'll try to get something pretty, so we
  11359. * have some strange css to have the scroll bar on
  11360. * the left with fix button on the top right of the tooltip
  11361. */
  11362. @-moz-keyframes fadeOut {
  11363. from {
  11364. opacity: 1;
  11365. }
  11366. to {
  11367. opacity: 0;
  11368. }
  11369. }
  11370. @-webkit-keyframes fadeOut {
  11371. from {
  11372. opacity: 1;
  11373. }
  11374. to {
  11375. opacity: 0;
  11376. }
  11377. }
  11378. @-moz-keyframes fadeIn {
  11379. from {
  11380. opacity: 0;
  11381. }
  11382. to {
  11383. opacity: 1;
  11384. }
  11385. }
  11386. @-webkit-keyframes fadeIn {
  11387. from {
  11388. opacity: 0;
  11389. }
  11390. to {
  11391. opacity: 1;
  11392. }
  11393. }
  11394. /*properties of tooltip after "expand"*/
  11395. .bigtooltip {
  11396. overflow: auto;
  11397. height: 200px;
  11398. -webkit-transition-property: height;
  11399. -webkit-transition-duration: 500ms;
  11400. -moz-transition-property: height;
  11401. -moz-transition-duration: 500ms;
  11402. transition-property: height;
  11403. transition-duration: 500ms;
  11404. }
  11405. /*properties of tooltip before "expand"*/
  11406. .smalltooltip {
  11407. -webkit-transition-property: height;
  11408. -webkit-transition-duration: 500ms;
  11409. -moz-transition-property: height;
  11410. -moz-transition-duration: 500ms;
  11411. transition-property: height;
  11412. transition-duration: 500ms;
  11413. text-overflow: ellipsis;
  11414. overflow: hidden;
  11415. height: 80px;
  11416. }
  11417. .tooltipbuttons {
  11418. position: absolute;
  11419. padding-right: 15px;
  11420. top: 0px;
  11421. right: 0px;
  11422. }
  11423. .tooltiptext {
  11424. /*avoid the button to overlap on some docstring*/
  11425. padding-right: 30px;
  11426. }
  11427. .ipython_tooltip {
  11428. max-width: 700px;
  11429. /*fade-in animation when inserted*/
  11430. -webkit-animation: fadeOut 400ms;
  11431. -moz-animation: fadeOut 400ms;
  11432. animation: fadeOut 400ms;
  11433. -webkit-animation: fadeIn 400ms;
  11434. -moz-animation: fadeIn 400ms;
  11435. animation: fadeIn 400ms;
  11436. vertical-align: middle;
  11437. background-color: #f7f7f7;
  11438. overflow: visible;
  11439. border: #ababab 1px solid;
  11440. outline: none;
  11441. padding: 3px;
  11442. margin: 0px;
  11443. padding-left: 7px;
  11444. font-family: monospace;
  11445. min-height: 50px;
  11446. -moz-box-shadow: 0px 6px 10px -1px #adadad;
  11447. -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  11448. box-shadow: 0px 6px 10px -1px #adadad;
  11449. border-radius: 2px;
  11450. position: absolute;
  11451. z-index: 1000;
  11452. }
  11453. .ipython_tooltip a {
  11454. float: right;
  11455. }
  11456. .ipython_tooltip .tooltiptext pre {
  11457. border: 0;
  11458. border-radius: 0;
  11459. font-size: 100%;
  11460. background-color: #f7f7f7;
  11461. }
  11462. .pretooltiparrow {
  11463. left: 0px;
  11464. margin: 0px;
  11465. top: -16px;
  11466. width: 40px;
  11467. height: 16px;
  11468. overflow: hidden;
  11469. position: absolute;
  11470. }
  11471. .pretooltiparrow:before {
  11472. background-color: #f7f7f7;
  11473. border: 1px #ababab solid;
  11474. z-index: 11;
  11475. content: "";
  11476. position: absolute;
  11477. left: 15px;
  11478. top: 10px;
  11479. width: 25px;
  11480. height: 25px;
  11481. -webkit-transform: rotate(45deg);
  11482. -moz-transform: rotate(45deg);
  11483. -ms-transform: rotate(45deg);
  11484. -o-transform: rotate(45deg);
  11485. }
  11486. ul.typeahead-list i {
  11487. margin-left: -10px;
  11488. width: 18px;
  11489. }
  11490. ul.typeahead-list {
  11491. max-height: 80vh;
  11492. overflow: auto;
  11493. }
  11494. ul.typeahead-list > li > a {
  11495. /** Firefox bug **/
  11496. /* see https://github.com/jupyter/notebook/issues/559 */
  11497. white-space: normal;
  11498. }
  11499. .cmd-palette .modal-body {
  11500. padding: 7px;
  11501. }
  11502. .cmd-palette form {
  11503. background: white;
  11504. }
  11505. .cmd-palette input {
  11506. outline: none;
  11507. }
  11508. .no-shortcut {
  11509. display: none;
  11510. }
  11511. .command-shortcut:before {
  11512. content: "(command)";
  11513. padding-right: 3px;
  11514. color: #777777;
  11515. }
  11516. .edit-shortcut:before {
  11517. content: "(edit)";
  11518. padding-right: 3px;
  11519. color: #777777;
  11520. }
  11521. #find-and-replace #replace-preview .match,
  11522. #find-and-replace #replace-preview .insert {
  11523. background-color: #BBDEFB;
  11524. border-color: #90CAF9;
  11525. border-style: solid;
  11526. border-width: 1px;
  11527. border-radius: 0px;
  11528. }
  11529. #find-and-replace #replace-preview .replace .match {
  11530. background-color: #FFCDD2;
  11531. border-color: #EF9A9A;
  11532. border-radius: 0px;
  11533. }
  11534. #find-and-replace #replace-preview .replace .insert {
  11535. background-color: #C8E6C9;
  11536. border-color: #A5D6A7;
  11537. border-radius: 0px;
  11538. }
  11539. #find-and-replace #replace-preview {
  11540. max-height: 60vh;
  11541. overflow: auto;
  11542. }
  11543. #find-and-replace #replace-preview pre {
  11544. padding: 5px 10px;
  11545. }
  11546. .terminal-app {
  11547. background: #EEE;
  11548. }
  11549. .terminal-app #header {
  11550. background: #fff;
  11551. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  11552. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  11553. }
  11554. .terminal-app .terminal {
  11555. float: left;
  11556. font-family: monospace;
  11557. color: white;
  11558. background: black;
  11559. padding: 0.4em;
  11560. border-radius: 2px;
  11561. -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  11562. box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  11563. }
  11564. .terminal-app .terminal,
  11565. .terminal-app .terminal dummy-screen {
  11566. line-height: 1em;
  11567. font-size: 14px;
  11568. }
  11569. .terminal-app .terminal-cursor {
  11570. color: black;
  11571. background: white;
  11572. }
  11573. .terminal-app #terminado-container {
  11574. margin-top: 20px;
  11575. }
  11576. /*# sourceMappingURL=style.min.css.map */
  11577. </style>
  11578. <style type="text/css">
  11579. .highlight .hll { background-color: #ffffcc }
  11580. .highlight { background: #f8f8f8; }
  11581. .highlight .c { color: #408080; font-style: italic } /* Comment */
  11582. .highlight .err { border: 1px solid #FF0000 } /* Error */
  11583. .highlight .k { color: #008000; font-weight: bold } /* Keyword */
  11584. .highlight .o { color: #666666 } /* Operator */
  11585. .highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
  11586. .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
  11587. .highlight .cp { color: #BC7A00 } /* Comment.Preproc */
  11588. .highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
  11589. .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
  11590. .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
  11591. .highlight .gd { color: #A00000 } /* Generic.Deleted */
  11592. .highlight .ge { font-style: italic } /* Generic.Emph */
  11593. .highlight .gr { color: #FF0000 } /* Generic.Error */
  11594. .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
  11595. .highlight .gi { color: #00A000 } /* Generic.Inserted */
  11596. .highlight .go { color: #888888 } /* Generic.Output */
  11597. .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
  11598. .highlight .gs { font-weight: bold } /* Generic.Strong */
  11599. .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
  11600. .highlight .gt { color: #0044DD } /* Generic.Traceback */
  11601. .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
  11602. .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
  11603. .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
  11604. .highlight .kp { color: #008000 } /* Keyword.Pseudo */
  11605. .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
  11606. .highlight .kt { color: #B00040 } /* Keyword.Type */
  11607. .highlight .m { color: #666666 } /* Literal.Number */
  11608. .highlight .s { color: #BA2121 } /* Literal.String */
  11609. .highlight .na { color: #7D9029 } /* Name.Attribute */
  11610. .highlight .nb { color: #008000 } /* Name.Builtin */
  11611. .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
  11612. .highlight .no { color: #880000 } /* Name.Constant */
  11613. .highlight .nd { color: #AA22FF } /* Name.Decorator */
  11614. .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
  11615. .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
  11616. .highlight .nf { color: #0000FF } /* Name.Function */
  11617. .highlight .nl { color: #A0A000 } /* Name.Label */
  11618. .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
  11619. .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
  11620. .highlight .nv { color: #19177C } /* Name.Variable */
  11621. .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
  11622. .highlight .w { color: #bbbbbb } /* Text.Whitespace */
  11623. .highlight .mb { color: #666666 } /* Literal.Number.Bin */
  11624. .highlight .mf { color: #666666 } /* Literal.Number.Float */
  11625. .highlight .mh { color: #666666 } /* Literal.Number.Hex */
  11626. .highlight .mi { color: #666666 } /* Literal.Number.Integer */
  11627. .highlight .mo { color: #666666 } /* Literal.Number.Oct */
  11628. .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
  11629. .highlight .sc { color: #BA2121 } /* Literal.String.Char */
  11630. .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
  11631. .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
  11632. .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
  11633. .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
  11634. .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
  11635. .highlight .sx { color: #008000 } /* Literal.String.Other */
  11636. .highlight .sr { color: #BB6688 } /* Literal.String.Regex */
  11637. .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
  11638. .highlight .ss { color: #19177C } /* Literal.String.Symbol */
  11639. .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
  11640. .highlight .vc { color: #19177C } /* Name.Variable.Class */
  11641. .highlight .vg { color: #19177C } /* Name.Variable.Global */
  11642. .highlight .vi { color: #19177C } /* Name.Variable.Instance */
  11643. .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
  11644. </style>
  11645. <style type="text/css">
  11646. /* Temporary definitions which will become obsolete with Notebook release 5.0 */
  11647. .ansi-black-fg { color: #3E424D; }
  11648. .ansi-black-bg { background-color: #3E424D; }
  11649. .ansi-black-intense-fg { color: #282C36; }
  11650. .ansi-black-intense-bg { background-color: #282C36; }
  11651. .ansi-red-fg { color: #E75C58; }
  11652. .ansi-red-bg { background-color: #E75C58; }
  11653. .ansi-red-intense-fg { color: #B22B31; }
  11654. .ansi-red-intense-bg { background-color: #B22B31; }
  11655. .ansi-green-fg { color: #00A250; }
  11656. .ansi-green-bg { background-color: #00A250; }
  11657. .ansi-green-intense-fg { color: #007427; }
  11658. .ansi-green-intense-bg { background-color: #007427; }
  11659. .ansi-yellow-fg { color: #DDB62B; }
  11660. .ansi-yellow-bg { background-color: #DDB62B; }
  11661. .ansi-yellow-intense-fg { color: #B27D12; }
  11662. .ansi-yellow-intense-bg { background-color: #B27D12; }
  11663. .ansi-blue-fg { color: #208FFB; }
  11664. .ansi-blue-bg { background-color: #208FFB; }
  11665. .ansi-blue-intense-fg { color: #0065CA; }
  11666. .ansi-blue-intense-bg { background-color: #0065CA; }
  11667. .ansi-magenta-fg { color: #D160C4; }
  11668. .ansi-magenta-bg { background-color: #D160C4; }
  11669. .ansi-magenta-intense-fg { color: #A03196; }
  11670. .ansi-magenta-intense-bg { background-color: #A03196; }
  11671. .ansi-cyan-fg { color: #60C6C8; }
  11672. .ansi-cyan-bg { background-color: #60C6C8; }
  11673. .ansi-cyan-intense-fg { color: #258F8F; }
  11674. .ansi-cyan-intense-bg { background-color: #258F8F; }
  11675. .ansi-white-fg { color: #C5C1B4; }
  11676. .ansi-white-bg { background-color: #C5C1B4; }
  11677. .ansi-white-intense-fg { color: #A1A6B2; }
  11678. .ansi-white-intense-bg { background-color: #A1A6B2; }
  11679. .ansi-bold { font-weight: bold; }
  11680. </style>
  11681. <style type="text/css">
  11682. /* Overrides of notebook CSS for static HTML export */
  11683. body {
  11684. overflow: visible;
  11685. padding: 8px;
  11686. }
  11687. div#notebook {
  11688. overflow: visible;
  11689. border-top: none;
  11690. }
  11691. @media print {
  11692. div.cell {
  11693. display: block;
  11694. page-break-inside: avoid;
  11695. }
  11696. div.output_wrapper {
  11697. display: block;
  11698. page-break-inside: avoid;
  11699. }
  11700. div.output {
  11701. display: block;
  11702. page-break-inside: avoid;
  11703. }
  11704. }
  11705. </style>
  11706. <!-- Custom stylesheet, it must be in the same directory as the html file -->
  11707. <link rel="stylesheet" href="custom.css">
  11708. <!-- Loading mathjax macro -->
  11709. <!-- Load mathjax -->
  11710. <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
  11711. <!-- MathJax configuration -->
  11712. <script type="text/x-mathjax-config">
  11713. MathJax.Hub.Config({
  11714. tex2jax: {
  11715. inlineMath: [ ['$','$'], ["\\(","\\)"] ],
  11716. displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
  11717. processEscapes: true,
  11718. processEnvironments: true
  11719. },
  11720. // Center justify equations in code and markdown cells. Elsewhere
  11721. // we use CSS to left justify single line equations in code cells.
  11722. displayAlign: 'center',
  11723. "HTML-CSS": {
  11724. styles: {'.MathJax_Display': {"margin": 0}},
  11725. linebreaks: { automatic: true }
  11726. }
  11727. });
  11728. </script>
  11729. <!-- End of mathjax configuration --></head>
  11730. <body>
  11731. <div tabindex="-1" id="notebook" class="border-box-sizing">
  11732. <div class="container" id="notebook-container">
  11733. <div class="cell border-box-sizing text_cell rendered">
  11734. <div class="prompt input_prompt">
  11735. </div>
  11736. <div class="inner_cell">
  11737. <div class="text_cell_render border-box-sizing rendered_html">
  11738. <h1 id="Artificial-Intelligence-Engineer-Nanodegree---Probabilistic-Models">Artificial Intelligence Engineer Nanodegree - Probabilistic Models<a class="anchor-link" href="#Artificial-Intelligence-Engineer-Nanodegree---Probabilistic-Models">&#182;</a></h1><h2 id="Project:-Sign-Language-Recognition-System">Project: Sign Language Recognition System<a class="anchor-link" href="#Project:-Sign-Language-Recognition-System">&#182;</a></h2><ul>
  11739. <li><a href="#intro">Introduction</a></li>
  11740. <li><a href="#part1_tutorial">Part 1 Feature Selection</a><ul>
  11741. <li><a href="#part1_tutorial">Tutorial</a></li>
  11742. <li><a href="#part1_submission">Features Submission</a></li>
  11743. <li><a href="#part1_test">Features Unittest</a></li>
  11744. </ul>
  11745. </li>
  11746. <li><a href="#part2_tutorial">Part 2 Train the models</a><ul>
  11747. <li><a href="#part2_tutorial">Tutorial</a></li>
  11748. <li><a href="#part2_submission">Model Selection Score Submission</a></li>
  11749. <li><a href="#part2_test">Model Score Unittest</a></li>
  11750. </ul>
  11751. </li>
  11752. <li><a href="#part3_tutorial">Part 3 Build a Recognizer</a><ul>
  11753. <li><a href="#part3_tutorial">Tutorial</a></li>
  11754. <li><a href="#part3_submission">Recognizer Submission</a></li>
  11755. <li><a href="#part3_test">Recognizer Unittest</a></li>
  11756. </ul>
  11757. </li>
  11758. <li><a href="#part4_info">Part 4 (OPTIONAL) Improve the WER with Language Models</a></li>
  11759. </ul>
  11760. </div>
  11761. </div>
  11762. </div>
  11763. <div class="cell border-box-sizing text_cell rendered">
  11764. <div class="prompt input_prompt">
  11765. </div>
  11766. <div class="inner_cell">
  11767. <div class="text_cell_render border-box-sizing rendered_html">
  11768. <p><a id='intro'></a></p>
  11769. <h2 id="Introduction">Introduction<a class="anchor-link" href="#Introduction">&#182;</a></h2><p>The overall goal of this project is to build a word recognizer for American Sign Language video sequences, demonstrating the power of probabalistic models. In particular, this project employs <a href="https://en.wikipedia.org/wiki/Hidden_Markov_model">hidden Markov models (HMM's)</a> to analyze a series of measurements taken from videos of American Sign Language (ASL) collected for research (see the <a href="http://www-i6.informatik.rwth-aachen.de/~dreuw/database-rwth-boston-104.php">RWTH-BOSTON-104 Database</a>). In this video, the right-hand x and y locations are plotted as the speaker signs the sentence.
  11770. <a href="https://drive.google.com/open?id=0B_5qGuFe-wbhUXRuVnNZVnMtam8"><img src="http://www-i6.informatik.rwth-aachen.de/~dreuw/images/demosample.png" alt="ASLR demo"></a></p>
  11771. <p>The raw data, train, and test sets are pre-defined. You will derive a variety of feature sets (explored in Part 1), as well as implement three different model selection criterion to determine the optimal number of hidden states for each word model (explored in Part 2). Finally, in Part 3 you will implement the recognizer and compare the effects the different combinations of feature sets and model selection criteria.</p>
  11772. <p>At the end of each Part, complete the submission cells with implementations, answer all questions, and pass the unit tests. Then submit the completed notebook for review!</p>
  11773. </div>
  11774. </div>
  11775. </div>
  11776. <div class="cell border-box-sizing text_cell rendered">
  11777. <div class="prompt input_prompt">
  11778. </div>
  11779. <div class="inner_cell">
  11780. <div class="text_cell_render border-box-sizing rendered_html">
  11781. <p><a id='part1_tutorial'></a></p>
  11782. <h2 id="PART-1:-Data">PART 1: Data<a class="anchor-link" href="#PART-1:-Data">&#182;</a></h2><h3 id="Features-Tutorial">Features Tutorial<a class="anchor-link" href="#Features-Tutorial">&#182;</a></h3><h5 id="Load-the-initial-database">Load the initial database<a class="anchor-link" href="#Load-the-initial-database">&#182;</a></h5><p>A data handler designed for this database is provided in the student codebase as the <code>AslDb</code> class in the <code>asl_data</code> module. This handler creates the initial <a href="http://pandas.pydata.org/pandas-docs/stable/">pandas</a> dataframe from the corpus of data included in the <code>data</code> directory as well as dictionaries suitable for extracting data in a format friendly to the <a href="https://hmmlearn.readthedocs.io/en/latest/">hmmlearn</a> library. We'll use those to create models in Part 2.</p>
  11783. <p>To start, let's set up the initial database and select an example set of features for the training set. At the end of Part 1, you will create additional feature sets for experimentation.</p>
  11784. </div>
  11785. </div>
  11786. </div>
  11787. <div class="cell border-box-sizing code_cell rendered">
  11788. <div class="input">
  11789. <div class="prompt input_prompt">In&nbsp;[1]:</div>
  11790. <div class="inner_cell">
  11791. <div class="input_area">
  11792. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
  11793. <span class="kn">import</span> <span class="nn">pandas</span> <span class="k">as</span> <span class="nn">pd</span>
  11794. <span class="kn">from</span> <span class="nn">asl_data</span> <span class="k">import</span> <span class="n">AslDb</span>
  11795. <span class="n">asl</span> <span class="o">=</span> <span class="n">AslDb</span><span class="p">()</span> <span class="c1"># initializes the database</span>
  11796. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span> <span class="c1"># displays the first five rows of the asl database, indexed by video and frame</span>
  11797. </pre></div>
  11798. </div>
  11799. </div>
  11800. </div>
  11801. <div class="output_wrapper">
  11802. <div class="output">
  11803. <div class="output_area"><div class="prompt output_prompt">Out[1]:</div>
  11804. <div class="output_html rendered_html output_subarea output_execute_result">
  11805. <div>
  11806. <table border="1" class="dataframe">
  11807. <thead>
  11808. <tr style="text-align: right;">
  11809. <th></th>
  11810. <th></th>
  11811. <th>left-x</th>
  11812. <th>left-y</th>
  11813. <th>right-x</th>
  11814. <th>right-y</th>
  11815. <th>nose-x</th>
  11816. <th>nose-y</th>
  11817. <th>speaker</th>
  11818. </tr>
  11819. <tr>
  11820. <th>video</th>
  11821. <th>frame</th>
  11822. <th></th>
  11823. <th></th>
  11824. <th></th>
  11825. <th></th>
  11826. <th></th>
  11827. <th></th>
  11828. <th></th>
  11829. </tr>
  11830. </thead>
  11831. <tbody>
  11832. <tr>
  11833. <th rowspan="5" valign="top">98</th>
  11834. <th>0</th>
  11835. <td>149</td>
  11836. <td>181</td>
  11837. <td>170</td>
  11838. <td>175</td>
  11839. <td>161</td>
  11840. <td>62</td>
  11841. <td>woman-1</td>
  11842. </tr>
  11843. <tr>
  11844. <th>1</th>
  11845. <td>149</td>
  11846. <td>181</td>
  11847. <td>170</td>
  11848. <td>175</td>
  11849. <td>161</td>
  11850. <td>62</td>
  11851. <td>woman-1</td>
  11852. </tr>
  11853. <tr>
  11854. <th>2</th>
  11855. <td>149</td>
  11856. <td>181</td>
  11857. <td>170</td>
  11858. <td>175</td>
  11859. <td>161</td>
  11860. <td>62</td>
  11861. <td>woman-1</td>
  11862. </tr>
  11863. <tr>
  11864. <th>3</th>
  11865. <td>149</td>
  11866. <td>181</td>
  11867. <td>170</td>
  11868. <td>175</td>
  11869. <td>161</td>
  11870. <td>62</td>
  11871. <td>woman-1</td>
  11872. </tr>
  11873. <tr>
  11874. <th>4</th>
  11875. <td>149</td>
  11876. <td>181</td>
  11877. <td>170</td>
  11878. <td>175</td>
  11879. <td>161</td>
  11880. <td>62</td>
  11881. <td>woman-1</td>
  11882. </tr>
  11883. </tbody>
  11884. </table>
  11885. </div>
  11886. </div>
  11887. </div>
  11888. </div>
  11889. </div>
  11890. </div>
  11891. <div class="cell border-box-sizing code_cell rendered">
  11892. <div class="input">
  11893. <div class="prompt input_prompt">In&nbsp;[2]:</div>
  11894. <div class="inner_cell">
  11895. <div class="input_area">
  11896. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="c1"># look at the data available for an individual frame</span>
  11897. </pre></div>
  11898. </div>
  11899. </div>
  11900. </div>
  11901. <div class="output_wrapper">
  11902. <div class="output">
  11903. <div class="output_area"><div class="prompt output_prompt">Out[2]:</div>
  11904. <div class="output_text output_subarea output_execute_result">
  11905. <pre>left-x 149
  11906. left-y 181
  11907. right-x 170
  11908. right-y 175
  11909. nose-x 161
  11910. nose-y 62
  11911. speaker woman-1
  11912. Name: (98, 1), dtype: object</pre>
  11913. </div>
  11914. </div>
  11915. </div>
  11916. </div>
  11917. </div>
  11918. <div class="cell border-box-sizing text_cell rendered">
  11919. <div class="prompt input_prompt">
  11920. </div>
  11921. <div class="inner_cell">
  11922. <div class="text_cell_render border-box-sizing rendered_html">
  11923. <p>The frame represented by video 98, frame 1 is shown here:</p>
  11924. <p><img src="http://www-i6.informatik.rwth-aachen.de/~dreuw/database/rwth-boston-104/overview/images/orig/098-start.jpg" alt="Video 98"></p>
  11925. </div>
  11926. </div>
  11927. </div>
  11928. <div class="cell border-box-sizing text_cell rendered">
  11929. <div class="prompt input_prompt">
  11930. </div>
  11931. <div class="inner_cell">
  11932. <div class="text_cell_render border-box-sizing rendered_html">
  11933. <h5 id="Feature-selection-for-training-the-model">Feature selection for training the model<a class="anchor-link" href="#Feature-selection-for-training-the-model">&#182;</a></h5><p>The objective of feature selection when training a model is to choose the most relevant variables while keeping the model as simple as possible, thus reducing training time. We can use the raw features already provided or derive our own and add columns to the pandas dataframe <code>asl.df</code> for selection. As an example, in the next cell a feature named <code>'grnd-ry'</code> is added. This feature is the difference between the right-hand y value and the nose y value, which serves as the "ground" right y value.</p>
  11934. </div>
  11935. </div>
  11936. </div>
  11937. <div class="cell border-box-sizing code_cell rendered">
  11938. <div class="input">
  11939. <div class="prompt input_prompt">In&nbsp;[3]:</div>
  11940. <div class="inner_cell">
  11941. <div class="input_area">
  11942. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-ry&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-y&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;nose-y&#39;</span><span class="p">]</span>
  11943. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span> <span class="c1"># the new feature &#39;grnd-ry&#39; is now in the frames dictionary</span>
  11944. </pre></div>
  11945. </div>
  11946. </div>
  11947. </div>
  11948. <div class="output_wrapper">
  11949. <div class="output">
  11950. <div class="output_area"><div class="prompt output_prompt">Out[3]:</div>
  11951. <div class="output_html rendered_html output_subarea output_execute_result">
  11952. <div>
  11953. <table border="1" class="dataframe">
  11954. <thead>
  11955. <tr style="text-align: right;">
  11956. <th></th>
  11957. <th></th>
  11958. <th>left-x</th>
  11959. <th>left-y</th>
  11960. <th>right-x</th>
  11961. <th>right-y</th>
  11962. <th>nose-x</th>
  11963. <th>nose-y</th>
  11964. <th>speaker</th>
  11965. <th>grnd-ry</th>
  11966. </tr>
  11967. <tr>
  11968. <th>video</th>
  11969. <th>frame</th>
  11970. <th></th>
  11971. <th></th>
  11972. <th></th>
  11973. <th></th>
  11974. <th></th>
  11975. <th></th>
  11976. <th></th>
  11977. <th></th>
  11978. </tr>
  11979. </thead>
  11980. <tbody>
  11981. <tr>
  11982. <th rowspan="5" valign="top">98</th>
  11983. <th>0</th>
  11984. <td>149</td>
  11985. <td>181</td>
  11986. <td>170</td>
  11987. <td>175</td>
  11988. <td>161</td>
  11989. <td>62</td>
  11990. <td>woman-1</td>
  11991. <td>113</td>
  11992. </tr>
  11993. <tr>
  11994. <th>1</th>
  11995. <td>149</td>
  11996. <td>181</td>
  11997. <td>170</td>
  11998. <td>175</td>
  11999. <td>161</td>
  12000. <td>62</td>
  12001. <td>woman-1</td>
  12002. <td>113</td>
  12003. </tr>
  12004. <tr>
  12005. <th>2</th>
  12006. <td>149</td>
  12007. <td>181</td>
  12008. <td>170</td>
  12009. <td>175</td>
  12010. <td>161</td>
  12011. <td>62</td>
  12012. <td>woman-1</td>
  12013. <td>113</td>
  12014. </tr>
  12015. <tr>
  12016. <th>3</th>
  12017. <td>149</td>
  12018. <td>181</td>
  12019. <td>170</td>
  12020. <td>175</td>
  12021. <td>161</td>
  12022. <td>62</td>
  12023. <td>woman-1</td>
  12024. <td>113</td>
  12025. </tr>
  12026. <tr>
  12027. <th>4</th>
  12028. <td>149</td>
  12029. <td>181</td>
  12030. <td>170</td>
  12031. <td>175</td>
  12032. <td>161</td>
  12033. <td>62</td>
  12034. <td>woman-1</td>
  12035. <td>113</td>
  12036. </tr>
  12037. </tbody>
  12038. </table>
  12039. </div>
  12040. </div>
  12041. </div>
  12042. </div>
  12043. </div>
  12044. </div>
  12045. <div class="cell border-box-sizing text_cell rendered">
  12046. <div class="prompt input_prompt">
  12047. </div>
  12048. <div class="inner_cell">
  12049. <div class="text_cell_render border-box-sizing rendered_html">
  12050. <h5 id="Try-it!">Try it!<a class="anchor-link" href="#Try-it!">&#182;</a></h5>
  12051. </div>
  12052. </div>
  12053. </div>
  12054. <div class="cell border-box-sizing code_cell rendered">
  12055. <div class="input">
  12056. <div class="prompt input_prompt">In&nbsp;[4]:</div>
  12057. <div class="inner_cell">
  12058. <div class="input_area">
  12059. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">asl_utils</span> <span class="k">import</span> <span class="n">test_features_tryit</span>
  12060. <span class="c1"># TODO add df columns for &#39;grnd-rx&#39;, &#39;grnd-ly&#39;, &#39;grnd-lx&#39; representing differences between hand and nose locations</span>
  12061. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-rx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-x&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;nose-x&#39;</span><span class="p">]</span>
  12062. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-ly&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-y&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;nose-y&#39;</span><span class="p">]</span>
  12063. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-lx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;nose-x&#39;</span><span class="p">]</span>
  12064. <span class="c1"># test the code</span>
  12065. <span class="n">test_features_tryit</span><span class="p">(</span><span class="n">asl</span><span class="p">)</span>
  12066. </pre></div>
  12067. </div>
  12068. </div>
  12069. </div>
  12070. <div class="output_wrapper">
  12071. <div class="output">
  12072. <div class="output_area"><div class="prompt"></div>
  12073. <div class="output_subarea output_stream output_stdout output_text">
  12074. <pre>asl.df sample
  12075. </pre>
  12076. </div>
  12077. </div>
  12078. <div class="output_area"><div class="prompt"></div>
  12079. <div class="output_html rendered_html output_subarea ">
  12080. <div>
  12081. <table border="1" class="dataframe">
  12082. <thead>
  12083. <tr style="text-align: right;">
  12084. <th></th>
  12085. <th></th>
  12086. <th>left-x</th>
  12087. <th>left-y</th>
  12088. <th>right-x</th>
  12089. <th>right-y</th>
  12090. <th>nose-x</th>
  12091. <th>nose-y</th>
  12092. <th>speaker</th>
  12093. <th>grnd-ry</th>
  12094. <th>grnd-rx</th>
  12095. <th>grnd-ly</th>
  12096. <th>grnd-lx</th>
  12097. </tr>
  12098. <tr>
  12099. <th>video</th>
  12100. <th>frame</th>
  12101. <th></th>
  12102. <th></th>
  12103. <th></th>
  12104. <th></th>
  12105. <th></th>
  12106. <th></th>
  12107. <th></th>
  12108. <th></th>
  12109. <th></th>
  12110. <th></th>
  12111. <th></th>
  12112. </tr>
  12113. </thead>
  12114. <tbody>
  12115. <tr>
  12116. <th rowspan="5" valign="top">98</th>
  12117. <th>0</th>
  12118. <td>149</td>
  12119. <td>181</td>
  12120. <td>170</td>
  12121. <td>175</td>
  12122. <td>161</td>
  12123. <td>62</td>
  12124. <td>woman-1</td>
  12125. <td>113</td>
  12126. <td>9</td>
  12127. <td>119</td>
  12128. <td>-12</td>
  12129. </tr>
  12130. <tr>
  12131. <th>1</th>
  12132. <td>149</td>
  12133. <td>181</td>
  12134. <td>170</td>
  12135. <td>175</td>
  12136. <td>161</td>
  12137. <td>62</td>
  12138. <td>woman-1</td>
  12139. <td>113</td>
  12140. <td>9</td>
  12141. <td>119</td>
  12142. <td>-12</td>
  12143. </tr>
  12144. <tr>
  12145. <th>2</th>
  12146. <td>149</td>
  12147. <td>181</td>
  12148. <td>170</td>
  12149. <td>175</td>
  12150. <td>161</td>
  12151. <td>62</td>
  12152. <td>woman-1</td>
  12153. <td>113</td>
  12154. <td>9</td>
  12155. <td>119</td>
  12156. <td>-12</td>
  12157. </tr>
  12158. <tr>
  12159. <th>3</th>
  12160. <td>149</td>
  12161. <td>181</td>
  12162. <td>170</td>
  12163. <td>175</td>
  12164. <td>161</td>
  12165. <td>62</td>
  12166. <td>woman-1</td>
  12167. <td>113</td>
  12168. <td>9</td>
  12169. <td>119</td>
  12170. <td>-12</td>
  12171. </tr>
  12172. <tr>
  12173. <th>4</th>
  12174. <td>149</td>
  12175. <td>181</td>
  12176. <td>170</td>
  12177. <td>175</td>
  12178. <td>161</td>
  12179. <td>62</td>
  12180. <td>woman-1</td>
  12181. <td>113</td>
  12182. <td>9</td>
  12183. <td>119</td>
  12184. <td>-12</td>
  12185. </tr>
  12186. </tbody>
  12187. </table>
  12188. </div>
  12189. </div>
  12190. </div>
  12191. <div class="output_area"><div class="prompt output_prompt">Out[4]:</div>
  12192. <div class="output_html rendered_html output_subarea output_execute_result">
  12193. <font color=green>Correct!</font><br/>
  12194. </div>
  12195. </div>
  12196. </div>
  12197. </div>
  12198. </div>
  12199. <div class="cell border-box-sizing code_cell rendered">
  12200. <div class="input">
  12201. <div class="prompt input_prompt">In&nbsp;[5]:</div>
  12202. <div class="inner_cell">
  12203. <div class="input_area">
  12204. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># collect the features into a list</span>
  12205. <span class="n">features_ground</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;grnd-rx&#39;</span><span class="p">,</span><span class="s1">&#39;grnd-ry&#39;</span><span class="p">,</span><span class="s1">&#39;grnd-lx&#39;</span><span class="p">,</span><span class="s1">&#39;grnd-ly&#39;</span><span class="p">]</span>
  12206. <span class="c1">#show a single set of features for a given (video, frame) tuple</span>
  12207. <span class="p">[</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span><span class="mi">1</span><span class="p">][</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">features_ground</span><span class="p">]</span>
  12208. </pre></div>
  12209. </div>
  12210. </div>
  12211. </div>
  12212. <div class="output_wrapper">
  12213. <div class="output">
  12214. <div class="output_area"><div class="prompt output_prompt">Out[5]:</div>
  12215. <div class="output_text output_subarea output_execute_result">
  12216. <pre>[9, 113, -12, 119]</pre>
  12217. </div>
  12218. </div>
  12219. </div>
  12220. </div>
  12221. </div>
  12222. <div class="cell border-box-sizing text_cell rendered">
  12223. <div class="prompt input_prompt">
  12224. </div>
  12225. <div class="inner_cell">
  12226. <div class="text_cell_render border-box-sizing rendered_html">
  12227. <h5 id="Build-the-training-set">Build the training set<a class="anchor-link" href="#Build-the-training-set">&#182;</a></h5><p>Now that we have a feature list defined, we can pass that list to the <code>build_training</code> method to collect the features for all the words in the training set. Each word in the training set has multiple examples from various videos. Below we can see the unique words that have been loaded into the training set:</p>
  12228. </div>
  12229. </div>
  12230. </div>
  12231. <div class="cell border-box-sizing code_cell rendered">
  12232. <div class="input">
  12233. <div class="prompt input_prompt">In&nbsp;[6]:</div>
  12234. <div class="inner_cell">
  12235. <div class="input_area">
  12236. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span>
  12237. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training words: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">words</span><span class="p">))</span>
  12238. </pre></div>
  12239. </div>
  12240. </div>
  12241. </div>
  12242. <div class="output_wrapper">
  12243. <div class="output">
  12244. <div class="output_area"><div class="prompt"></div>
  12245. <div class="output_subarea output_stream output_stdout output_text">
  12246. <pre>Training words: [&#39;JOHN&#39;, &#39;WRITE&#39;, &#39;HOMEWORK&#39;, &#39;IX-1P&#39;, &#39;SEE&#39;, &#39;YESTERDAY&#39;, &#39;IX&#39;, &#39;LOVE&#39;, &#39;MARY&#39;, &#39;CAN&#39;, &#39;GO&#39;, &#39;GO1&#39;, &#39;FUTURE&#39;, &#39;GO2&#39;, &#39;PARTY&#39;, &#39;FUTURE1&#39;, &#39;HIT&#39;, &#39;BLAME&#39;, &#39;FRED&#39;, &#39;FISH&#39;, &#39;WONT&#39;, &#39;EAT&#39;, &#39;BUT&#39;, &#39;CHICKEN&#39;, &#39;VEGETABLE&#39;, &#39;CHINA&#39;, &#39;PEOPLE&#39;, &#39;PREFER&#39;, &#39;BROCCOLI&#39;, &#39;LIKE&#39;, &#39;LEAVE&#39;, &#39;SAY&#39;, &#39;BUY&#39;, &#39;HOUSE&#39;, &#39;KNOW&#39;, &#39;CORN&#39;, &#39;CORN1&#39;, &#39;THINK&#39;, &#39;NOT&#39;, &#39;PAST&#39;, &#39;LIVE&#39;, &#39;CHICAGO&#39;, &#39;CAR&#39;, &#39;SHOULD&#39;, &#39;DECIDE&#39;, &#39;VISIT&#39;, &#39;MOVIE&#39;, &#39;WANT&#39;, &#39;SELL&#39;, &#39;TOMORROW&#39;, &#39;NEXT-WEEK&#39;, &#39;NEW-YORK&#39;, &#39;LAST-WEEK&#39;, &#39;WILL&#39;, &#39;FINISH&#39;, &#39;ANN&#39;, &#39;READ&#39;, &#39;BOOK&#39;, &#39;CHOCOLATE&#39;, &#39;FIND&#39;, &#39;SOMETHING-ONE&#39;, &#39;POSS&#39;, &#39;BROTHER&#39;, &#39;ARRIVE&#39;, &#39;HERE&#39;, &#39;GIVE&#39;, &#39;MAN&#39;, &#39;NEW&#39;, &#39;COAT&#39;, &#39;WOMAN&#39;, &#39;GIVE1&#39;, &#39;HAVE&#39;, &#39;FRANK&#39;, &#39;BREAK-DOWN&#39;, &#39;SEARCH-FOR&#39;, &#39;WHO&#39;, &#39;WHAT&#39;, &#39;LEG&#39;, &#39;FRIEND&#39;, &#39;CANDY&#39;, &#39;BLUE&#39;, &#39;SUE&#39;, &#39;BUY1&#39;, &#39;STOLEN&#39;, &#39;OLD&#39;, &#39;STUDENT&#39;, &#39;VIDEOTAPE&#39;, &#39;BORROW&#39;, &#39;MOTHER&#39;, &#39;POTATO&#39;, &#39;TELL&#39;, &#39;BILL&#39;, &#39;THROW&#39;, &#39;APPLE&#39;, &#39;NAME&#39;, &#39;SHOOT&#39;, &#39;SAY-1P&#39;, &#39;SELF&#39;, &#39;GROUP&#39;, &#39;JANA&#39;, &#39;TOY1&#39;, &#39;MANY&#39;, &#39;TOY&#39;, &#39;ALL&#39;, &#39;BOY&#39;, &#39;TEACHER&#39;, &#39;GIRL&#39;, &#39;BOX&#39;, &#39;GIVE2&#39;, &#39;GIVE3&#39;, &#39;GET&#39;, &#39;PUTASIDE&#39;]
  12247. </pre>
  12248. </div>
  12249. </div>
  12250. </div>
  12251. </div>
  12252. </div>
  12253. <div class="cell border-box-sizing text_cell rendered">
  12254. <div class="prompt input_prompt">
  12255. </div>
  12256. <div class="inner_cell">
  12257. <div class="text_cell_render border-box-sizing rendered_html">
  12258. <p>The training data in <code>training</code> is an object of class <code>WordsData</code> defined in the <code>asl_data</code> module. in addition to the <code>words</code> list, data can be accessed with the <code>get_all_sequences</code>, <code>get_all_Xlengths</code>, <code>get_word_sequences</code>, and <code>get_word_Xlengths</code> methods. We need the <code>get_word_Xlengths</code> method to train multiple sequences with the <code>hmmlearn</code> library. In the following example, notice that there are two lists; the first is a concatenation of all the sequences(the X portion) and the second is a list of the sequence lengths (the Lengths portion).</p>
  12259. </div>
  12260. </div>
  12261. </div>
  12262. <div class="cell border-box-sizing code_cell rendered">
  12263. <div class="input">
  12264. <div class="prompt input_prompt">In&nbsp;[7]:</div>
  12265. <div class="inner_cell">
  12266. <div class="input_area">
  12267. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">training</span><span class="o">.</span><span class="n">get_word_Xlengths</span><span class="p">(</span><span class="s1">&#39;CHOCOLATE&#39;</span><span class="p">)</span>
  12268. </pre></div>
  12269. </div>
  12270. </div>
  12271. </div>
  12272. <div class="output_wrapper">
  12273. <div class="output">
  12274. <div class="output_area"><div class="prompt output_prompt">Out[7]:</div>
  12275. <div class="output_text output_subarea output_execute_result">
  12276. <pre>(array([[-11, 48, 7, 120],
  12277. [-11, 48, 8, 109],
  12278. [ -8, 49, 11, 98],
  12279. [ -7, 50, 7, 87],
  12280. [ -4, 54, 7, 77],
  12281. [ -4, 54, 6, 69],
  12282. [ -4, 54, 6, 69],
  12283. [-13, 52, 6, 69],
  12284. [-13, 52, 6, 69],
  12285. [ -8, 51, 6, 69],
  12286. [ -8, 51, 6, 69],
  12287. [ -8, 51, 6, 69],
  12288. [ -8, 51, 6, 69],
  12289. [ -8, 51, 6, 69],
  12290. [-10, 59, 7, 71],
  12291. [-15, 64, 9, 77],
  12292. [-17, 75, 13, 81],
  12293. [ -4, 48, -4, 113],
  12294. [ -2, 53, -4, 113],
  12295. [ -4, 55, 2, 98],
  12296. [ -4, 58, 2, 98],
  12297. [ -1, 59, 2, 89],
  12298. [ -1, 59, -1, 84],
  12299. [ -1, 59, -1, 84],
  12300. [ -7, 63, -1, 84],
  12301. [ -7, 63, -1, 84],
  12302. [ -7, 63, 3, 83],
  12303. [ -7, 63, 3, 83],
  12304. [ -7, 63, 3, 83],
  12305. [ -7, 63, 3, 83],
  12306. [ -7, 63, 3, 83],
  12307. [ -7, 63, 3, 83],
  12308. [ -7, 63, 3, 83],
  12309. [ -4, 70, 3, 83],
  12310. [ -4, 70, 3, 83],
  12311. [ -2, 73, 5, 90],
  12312. [ -3, 79, -4, 96],
  12313. [-15, 98, 13, 135],
  12314. [ -6, 93, 12, 128],
  12315. [ -2, 89, 14, 118],
  12316. [ 5, 90, 10, 108],
  12317. [ 4, 86, 7, 105],
  12318. [ 4, 86, 7, 105],
  12319. [ 4, 86, 13, 100],
  12320. [ -3, 82, 14, 96],
  12321. [ -3, 82, 14, 96],
  12322. [ 6, 89, 16, 100],
  12323. [ 6, 89, 16, 100],
  12324. [ 7, 85, 17, 111]], dtype=int64), [17, 20, 12])</pre>
  12325. </div>
  12326. </div>
  12327. </div>
  12328. </div>
  12329. </div>
  12330. <div class="cell border-box-sizing text_cell rendered">
  12331. <div class="prompt input_prompt">
  12332. </div>
  12333. <div class="inner_cell">
  12334. <div class="text_cell_render border-box-sizing rendered_html">
  12335. <h6 id="More-feature-sets">More feature sets<a class="anchor-link" href="#More-feature-sets">&#182;</a></h6><p>So far we have a simple feature set that is enough to get started modeling. However, we might get better results if we manipulate the raw values a bit more, so we will go ahead and set up some other options now for experimentation later. For example, we could normalize each speaker's range of motion with grouped statistics using <a href="http://pandas.pydata.org/pandas-docs/stable/api.html#api-dataframe-stats">Pandas stats</a> functions and <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html">pandas groupby</a>. Below is an example for finding the means of all speaker subgroups.</p>
  12336. </div>
  12337. </div>
  12338. </div>
  12339. <div class="cell border-box-sizing code_cell rendered">
  12340. <div class="input">
  12341. <div class="prompt input_prompt">In&nbsp;[8]:</div>
  12342. <div class="inner_cell">
  12343. <div class="input_area">
  12344. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">df_means</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;speaker&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
  12345. <span class="n">df_means</span>
  12346. </pre></div>
  12347. </div>
  12348. </div>
  12349. </div>
  12350. <div class="output_wrapper">
  12351. <div class="output">
  12352. <div class="output_area"><div class="prompt output_prompt">Out[8]:</div>
  12353. <div class="output_html rendered_html output_subarea output_execute_result">
  12354. <div>
  12355. <table border="1" class="dataframe">
  12356. <thead>
  12357. <tr style="text-align: right;">
  12358. <th></th>
  12359. <th>left-x</th>
  12360. <th>left-y</th>
  12361. <th>right-x</th>
  12362. <th>right-y</th>
  12363. <th>nose-x</th>
  12364. <th>nose-y</th>
  12365. <th>grnd-ry</th>
  12366. <th>grnd-rx</th>
  12367. <th>grnd-ly</th>
  12368. <th>grnd-lx</th>
  12369. </tr>
  12370. <tr>
  12371. <th>speaker</th>
  12372. <th></th>
  12373. <th></th>
  12374. <th></th>
  12375. <th></th>
  12376. <th></th>
  12377. <th></th>
  12378. <th></th>
  12379. <th></th>
  12380. <th></th>
  12381. <th></th>
  12382. </tr>
  12383. </thead>
  12384. <tbody>
  12385. <tr>
  12386. <th>man-1</th>
  12387. <td>206.248203</td>
  12388. <td>218.679449</td>
  12389. <td>155.464350</td>
  12390. <td>150.371031</td>
  12391. <td>175.031756</td>
  12392. <td>61.642600</td>
  12393. <td>88.728430</td>
  12394. <td>-19.567406</td>
  12395. <td>157.036848</td>
  12396. <td>31.216447</td>
  12397. </tr>
  12398. <tr>
  12399. <th>woman-1</th>
  12400. <td>164.661438</td>
  12401. <td>161.271242</td>
  12402. <td>151.017865</td>
  12403. <td>117.332462</td>
  12404. <td>162.655120</td>
  12405. <td>57.245098</td>
  12406. <td>60.087364</td>
  12407. <td>-11.637255</td>
  12408. <td>104.026144</td>
  12409. <td>2.006318</td>
  12410. </tr>
  12411. <tr>
  12412. <th>woman-2</th>
  12413. <td>183.214509</td>
  12414. <td>176.527232</td>
  12415. <td>156.866295</td>
  12416. <td>119.835714</td>
  12417. <td>170.318973</td>
  12418. <td>58.022098</td>
  12419. <td>61.813616</td>
  12420. <td>-13.452679</td>
  12421. <td>118.505134</td>
  12422. <td>12.895536</td>
  12423. </tr>
  12424. </tbody>
  12425. </table>
  12426. </div>
  12427. </div>
  12428. </div>
  12429. </div>
  12430. </div>
  12431. </div>
  12432. <div class="cell border-box-sizing text_cell rendered">
  12433. <div class="prompt input_prompt">
  12434. </div>
  12435. <div class="inner_cell">
  12436. <div class="text_cell_render border-box-sizing rendered_html">
  12437. <p>To select a mean that matches by speaker, use the pandas <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.map.html">map</a> method:</p>
  12438. </div>
  12439. </div>
  12440. </div>
  12441. <div class="cell border-box-sizing code_cell rendered">
  12442. <div class="input">
  12443. <div class="prompt input_prompt">In&nbsp;[9]:</div>
  12444. <div class="inner_cell">
  12445. <div class="input_area">
  12446. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-x-mean&#39;</span><span class="p">]</span><span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">])</span>
  12447. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
  12448. </pre></div>
  12449. </div>
  12450. </div>
  12451. </div>
  12452. <div class="output_wrapper">
  12453. <div class="output">
  12454. <div class="output_area"><div class="prompt output_prompt">Out[9]:</div>
  12455. <div class="output_html rendered_html output_subarea output_execute_result">
  12456. <div>
  12457. <table border="1" class="dataframe">
  12458. <thead>
  12459. <tr style="text-align: right;">
  12460. <th></th>
  12461. <th></th>
  12462. <th>left-x</th>
  12463. <th>left-y</th>
  12464. <th>right-x</th>
  12465. <th>right-y</th>
  12466. <th>nose-x</th>
  12467. <th>nose-y</th>
  12468. <th>speaker</th>
  12469. <th>grnd-ry</th>
  12470. <th>grnd-rx</th>
  12471. <th>grnd-ly</th>
  12472. <th>grnd-lx</th>
  12473. <th>left-x-mean</th>
  12474. </tr>
  12475. <tr>
  12476. <th>video</th>
  12477. <th>frame</th>
  12478. <th></th>
  12479. <th></th>
  12480. <th></th>
  12481. <th></th>
  12482. <th></th>
  12483. <th></th>
  12484. <th></th>
  12485. <th></th>
  12486. <th></th>
  12487. <th></th>
  12488. <th></th>
  12489. <th></th>
  12490. </tr>
  12491. </thead>
  12492. <tbody>
  12493. <tr>
  12494. <th rowspan="5" valign="top">98</th>
  12495. <th>0</th>
  12496. <td>149</td>
  12497. <td>181</td>
  12498. <td>170</td>
  12499. <td>175</td>
  12500. <td>161</td>
  12501. <td>62</td>
  12502. <td>woman-1</td>
  12503. <td>113</td>
  12504. <td>9</td>
  12505. <td>119</td>
  12506. <td>-12</td>
  12507. <td>164.661438</td>
  12508. </tr>
  12509. <tr>
  12510. <th>1</th>
  12511. <td>149</td>
  12512. <td>181</td>
  12513. <td>170</td>
  12514. <td>175</td>
  12515. <td>161</td>
  12516. <td>62</td>
  12517. <td>woman-1</td>
  12518. <td>113</td>
  12519. <td>9</td>
  12520. <td>119</td>
  12521. <td>-12</td>
  12522. <td>164.661438</td>
  12523. </tr>
  12524. <tr>
  12525. <th>2</th>
  12526. <td>149</td>
  12527. <td>181</td>
  12528. <td>170</td>
  12529. <td>175</td>
  12530. <td>161</td>
  12531. <td>62</td>
  12532. <td>woman-1</td>
  12533. <td>113</td>
  12534. <td>9</td>
  12535. <td>119</td>
  12536. <td>-12</td>
  12537. <td>164.661438</td>
  12538. </tr>
  12539. <tr>
  12540. <th>3</th>
  12541. <td>149</td>
  12542. <td>181</td>
  12543. <td>170</td>
  12544. <td>175</td>
  12545. <td>161</td>
  12546. <td>62</td>
  12547. <td>woman-1</td>
  12548. <td>113</td>
  12549. <td>9</td>
  12550. <td>119</td>
  12551. <td>-12</td>
  12552. <td>164.661438</td>
  12553. </tr>
  12554. <tr>
  12555. <th>4</th>
  12556. <td>149</td>
  12557. <td>181</td>
  12558. <td>170</td>
  12559. <td>175</td>
  12560. <td>161</td>
  12561. <td>62</td>
  12562. <td>woman-1</td>
  12563. <td>113</td>
  12564. <td>9</td>
  12565. <td>119</td>
  12566. <td>-12</td>
  12567. <td>164.661438</td>
  12568. </tr>
  12569. </tbody>
  12570. </table>
  12571. </div>
  12572. </div>
  12573. </div>
  12574. </div>
  12575. </div>
  12576. </div>
  12577. <div class="cell border-box-sizing text_cell rendered">
  12578. <div class="prompt input_prompt">
  12579. </div>
  12580. <div class="inner_cell">
  12581. <div class="text_cell_render border-box-sizing rendered_html">
  12582. <h5 id="Try-it!">Try it!<a class="anchor-link" href="#Try-it!">&#182;</a></h5>
  12583. </div>
  12584. </div>
  12585. </div>
  12586. <div class="cell border-box-sizing code_cell rendered">
  12587. <div class="input">
  12588. <div class="prompt input_prompt">In&nbsp;[10]:</div>
  12589. <div class="inner_cell">
  12590. <div class="input_area">
  12591. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">asl_utils</span> <span class="k">import</span> <span class="n">test_std_tryit</span>
  12592. <span class="c1"># TODO Create a dataframe named `df_std` with standard deviations grouped by speaker</span>
  12593. <span class="n">df_std</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;speaker&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">std</span><span class="p">()</span>
  12594. <span class="c1"># test the code</span>
  12595. <span class="n">test_std_tryit</span><span class="p">(</span><span class="n">df_std</span><span class="p">)</span>
  12596. </pre></div>
  12597. </div>
  12598. </div>
  12599. </div>
  12600. <div class="output_wrapper">
  12601. <div class="output">
  12602. <div class="output_area"><div class="prompt"></div>
  12603. <div class="output_subarea output_stream output_stdout output_text">
  12604. <pre>df_std
  12605. </pre>
  12606. </div>
  12607. </div>
  12608. <div class="output_area"><div class="prompt"></div>
  12609. <div class="output_html rendered_html output_subarea ">
  12610. <div>
  12611. <table border="1" class="dataframe">
  12612. <thead>
  12613. <tr style="text-align: right;">
  12614. <th></th>
  12615. <th>left-x</th>
  12616. <th>left-y</th>
  12617. <th>right-x</th>
  12618. <th>right-y</th>
  12619. <th>nose-x</th>
  12620. <th>nose-y</th>
  12621. <th>grnd-ry</th>
  12622. <th>grnd-rx</th>
  12623. <th>grnd-ly</th>
  12624. <th>grnd-lx</th>
  12625. <th>left-x-mean</th>
  12626. </tr>
  12627. <tr>
  12628. <th>speaker</th>
  12629. <th></th>
  12630. <th></th>
  12631. <th></th>
  12632. <th></th>
  12633. <th></th>
  12634. <th></th>
  12635. <th></th>
  12636. <th></th>
  12637. <th></th>
  12638. <th></th>
  12639. <th></th>
  12640. </tr>
  12641. </thead>
  12642. <tbody>
  12643. <tr>
  12644. <th>man-1</th>
  12645. <td>15.154425</td>
  12646. <td>36.328485</td>
  12647. <td>18.901917</td>
  12648. <td>54.902340</td>
  12649. <td>6.654573</td>
  12650. <td>5.520045</td>
  12651. <td>53.487999</td>
  12652. <td>20.269032</td>
  12653. <td>36.572749</td>
  12654. <td>15.080360</td>
  12655. <td>0.0</td>
  12656. </tr>
  12657. <tr>
  12658. <th>woman-1</th>
  12659. <td>17.573442</td>
  12660. <td>26.594521</td>
  12661. <td>16.459943</td>
  12662. <td>34.667787</td>
  12663. <td>3.549392</td>
  12664. <td>3.538330</td>
  12665. <td>33.972660</td>
  12666. <td>16.764706</td>
  12667. <td>27.117393</td>
  12668. <td>17.328941</td>
  12669. <td>0.0</td>
  12670. </tr>
  12671. <tr>
  12672. <th>woman-2</th>
  12673. <td>15.388711</td>
  12674. <td>28.825025</td>
  12675. <td>14.890288</td>
  12676. <td>39.649111</td>
  12677. <td>4.099760</td>
  12678. <td>3.416167</td>
  12679. <td>39.128572</td>
  12680. <td>16.191324</td>
  12681. <td>29.320655</td>
  12682. <td>15.050938</td>
  12683. <td>0.0</td>
  12684. </tr>
  12685. </tbody>
  12686. </table>
  12687. </div>
  12688. </div>
  12689. </div>
  12690. <div class="output_area"><div class="prompt output_prompt">Out[10]:</div>
  12691. <div class="output_html rendered_html output_subarea output_execute_result">
  12692. <font color=green>Correct!</font><br/>
  12693. </div>
  12694. </div>
  12695. </div>
  12696. </div>
  12697. </div>
  12698. <div class="cell border-box-sizing text_cell rendered">
  12699. <div class="prompt input_prompt">
  12700. </div>
  12701. <div class="inner_cell">
  12702. <div class="text_cell_render border-box-sizing rendered_html">
  12703. <p><a id='part1_submission'></a></p>
  12704. <h3 id="Features-Implementation-Submission">Features Implementation Submission<a class="anchor-link" href="#Features-Implementation-Submission">&#182;</a></h3><p>Implement four feature sets and answer the question that follows.</p>
  12705. <ul>
  12706. <li><p>normalized Cartesian coordinates</p>
  12707. <ul>
  12708. <li>use <em>mean</em> and <em>standard deviation</em> statistics and the <a href="https://en.wikipedia.org/wiki/Standard_score">standard score</a> equation to account for speakers with different heights and arm length</li>
  12709. </ul>
  12710. </li>
  12711. <li><p>polar coordinates</p>
  12712. <ul>
  12713. <li>calculate polar coordinates with <a href="https://en.wikipedia.org/wiki/Polar_coordinate_system#Converting_between_polar_and_Cartesian_coordinates">Cartesian to polar equations</a></li>
  12714. <li>use the <a href="https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.arctan2.html">np.arctan2</a> function and <em>swap the x and y axes</em> to move the $0$ to $2\pi$ discontinuity to 12 o'clock instead of 3 o'clock; in other words, the normal break in radians value from $0$ to $2\pi$ occurs directly to the left of the speaker's nose, which may be in the signing area and interfere with results. By swapping the x and y axes, that discontinuity move to directly above the speaker's head, an area not generally used in signing.</li>
  12715. </ul>
  12716. </li>
  12717. <li><p>delta difference</p>
  12718. <ul>
  12719. <li>as described in Thad's lecture, use the difference in values between one frame and the next frames as features</li>
  12720. <li>pandas <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.diff.html">diff method</a> and <a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.fillna.html">fillna method</a> will be helpful for this one</li>
  12721. </ul>
  12722. </li>
  12723. <li><p>custom features</p>
  12724. <ul>
  12725. <li>These are your own design; combine techniques used above or come up with something else entirely. We look forward to seeing what you come up with!
  12726. Some ideas to get you started:<ul>
  12727. <li>normalize using a <a href="https://en.wikipedia.org/wiki/Feature_scaling">feature scaling equation</a></li>
  12728. <li>normalize the polar coordinates</li>
  12729. <li>adding additional deltas</li>
  12730. </ul>
  12731. </li>
  12732. </ul>
  12733. </li>
  12734. </ul>
  12735. </div>
  12736. </div>
  12737. </div>
  12738. <div class="cell border-box-sizing code_cell rendered">
  12739. <div class="input">
  12740. <div class="prompt input_prompt">In&nbsp;[11]:</div>
  12741. <div class="inner_cell">
  12742. <div class="input_area">
  12743. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO add features for normalized by speaker values of left, right, x, y</span>
  12744. <span class="c1"># Name these &#39;norm-rx&#39;, &#39;norm-ry&#39;, &#39;norm-lx&#39;, and &#39;norm-ly&#39;</span>
  12745. <span class="c1"># using Z-score scaling (X-Xmean)/Xstd</span>
  12746. <span class="n">features_norm</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;norm-rx&#39;</span><span class="p">,</span> <span class="s1">&#39;norm-ry&#39;</span><span class="p">,</span> <span class="s1">&#39;norm-lx&#39;</span><span class="p">,</span><span class="s1">&#39;norm-ly&#39;</span><span class="p">]</span>
  12747. <span class="n">mean_right_x</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;right-x&#39;</span><span class="p">])</span>
  12748. <span class="n">mean_right_y</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;right-y&#39;</span><span class="p">])</span>
  12749. <span class="n">mean_left_x</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">])</span>
  12750. <span class="n">mean_left_y</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;left-y&#39;</span><span class="p">])</span>
  12751. <span class="n">std_right_x</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;right-x&#39;</span><span class="p">])</span>
  12752. <span class="n">std_right_y</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;right-y&#39;</span><span class="p">])</span>
  12753. <span class="n">std_left_x</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">])</span>
  12754. <span class="n">std_left_y</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;left-y&#39;</span><span class="p">])</span>
  12755. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-rx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-x&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_right_x</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_right_x</span>
  12756. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-ry&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-y&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_right_y</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_right_y</span>
  12757. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-lx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_left_x</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_left_x</span>
  12758. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-ly&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-y&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_left_y</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_left_y</span>
  12759. </pre></div>
  12760. </div>
  12761. </div>
  12762. </div>
  12763. </div>
  12764. <div class="cell border-box-sizing code_cell rendered">
  12765. <div class="input">
  12766. <div class="prompt input_prompt">In&nbsp;[12]:</div>
  12767. <div class="inner_cell">
  12768. <div class="input_area">
  12769. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO add features for polar coordinate values where the nose is the origin</span>
  12770. <span class="c1"># Name these &#39;polar-rr&#39;, &#39;polar-rtheta&#39;, &#39;polar-lr&#39;, and &#39;polar-ltheta&#39;</span>
  12771. <span class="c1"># Note that &#39;polar-rr&#39; and &#39;polar-rtheta&#39; refer to the radius and angle</span>
  12772. <span class="n">features_polar</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;polar-rr&#39;</span><span class="p">,</span> <span class="s1">&#39;polar-rtheta&#39;</span><span class="p">,</span> <span class="s1">&#39;polar-lr&#39;</span><span class="p">,</span> <span class="s1">&#39;polar-ltheta&#39;</span><span class="p">]</span>
  12773. <span class="n">grnd_rx</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-rx&#39;</span><span class="p">]</span>
  12774. <span class="n">grnd_ry</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-ry&#39;</span><span class="p">]</span>
  12775. <span class="n">grnd_lx</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-lx&#39;</span><span class="p">]</span>
  12776. <span class="n">grnd_ly</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;grnd-ly&#39;</span><span class="p">]</span>
  12777. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-rr&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">grnd_rx</span><span class="o">*</span><span class="n">grnd_rx</span> <span class="o">+</span> <span class="n">grnd_ry</span><span class="o">*</span><span class="n">grnd_ry</span><span class="p">)</span>
  12778. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-rtheta&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">grnd_rx</span><span class="p">,</span> <span class="n">grnd_ry</span><span class="p">)</span>
  12779. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-lr&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">grnd_lx</span><span class="o">*</span><span class="n">grnd_lx</span> <span class="o">+</span> <span class="n">grnd_ly</span><span class="o">*</span><span class="n">grnd_ly</span><span class="p">)</span>
  12780. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-ltheta&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arctan2</span><span class="p">(</span><span class="n">grnd_lx</span><span class="p">,</span> <span class="n">grnd_ly</span><span class="p">)</span>
  12781. </pre></div>
  12782. </div>
  12783. </div>
  12784. </div>
  12785. </div>
  12786. <div class="cell border-box-sizing code_cell rendered">
  12787. <div class="input">
  12788. <div class="prompt input_prompt">In&nbsp;[13]:</div>
  12789. <div class="inner_cell">
  12790. <div class="input_area">
  12791. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO add features for left, right, x, y differences by one time step, i.e. the &quot;delta&quot; values discussed in the lecture</span>
  12792. <span class="c1"># Name these &#39;delta-rx&#39;, &#39;delta-ry&#39;, &#39;delta-lx&#39;, and &#39;delta-ly&#39;</span>
  12793. <span class="n">features_delta</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;delta-rx&#39;</span><span class="p">,</span> <span class="s1">&#39;delta-ry&#39;</span><span class="p">,</span> <span class="s1">&#39;delta-lx&#39;</span><span class="p">,</span> <span class="s1">&#39;delta-ly&#39;</span><span class="p">]</span>
  12794. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;delta-rx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-x&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">diff</span><span class="p">()</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
  12795. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;delta-ry&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;right-y&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">diff</span><span class="p">()</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
  12796. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;delta-lx&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-x&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">diff</span><span class="p">()</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
  12797. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;delta-ly&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;left-y&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">diff</span><span class="p">()</span><span class="o">.</span><span class="n">fillna</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
  12798. </pre></div>
  12799. </div>
  12800. </div>
  12801. </div>
  12802. </div>
  12803. <div class="cell border-box-sizing code_cell rendered">
  12804. <div class="input">
  12805. <div class="prompt input_prompt">In&nbsp;[14]:</div>
  12806. <div class="inner_cell">
  12807. <div class="input_area">
  12808. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO add features of your own design, which may be a combination of the above or something else</span>
  12809. <span class="c1"># Name these whatever you would like</span>
  12810. <span class="c1"># TODO define a list named &#39;features_custom&#39; for building the training set</span>
  12811. <span class="c1"># Need to calculate mean and std again to include &#39;polar-rr&#39; and &#39;polar-lr&#39;</span>
  12812. <span class="n">df_means</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;speaker&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">mean</span><span class="p">()</span>
  12813. <span class="n">df_std</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">groupby</span><span class="p">(</span><span class="s1">&#39;speaker&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">std</span><span class="p">()</span>
  12814. <span class="c1"># Normalize right arm radius</span>
  12815. <span class="n">mean_polar_rr</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;polar-rr&#39;</span><span class="p">])</span>
  12816. <span class="n">std_polar_rr</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;polar-rr&#39;</span><span class="p">])</span>
  12817. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-polar-rr&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-rr&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_polar_rr</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_polar_rr</span>
  12818. <span class="c1"># Normalize left arm radius</span>
  12819. <span class="n">mean_polar_lr</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_means</span><span class="p">[</span><span class="s1">&#39;polar-lr&#39;</span><span class="p">])</span>
  12820. <span class="n">std_polar_lr</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;speaker&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">df_std</span><span class="p">[</span><span class="s1">&#39;polar-lr&#39;</span><span class="p">])</span>
  12821. <span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;norm-polar-lr&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="p">[</span><span class="s1">&#39;polar-lr&#39;</span><span class="p">]</span> <span class="o">-</span> <span class="n">mean_polar_lr</span><span class="p">)</span> <span class="o">/</span> <span class="n">std_polar_lr</span>
  12822. </pre></div>
  12823. </div>
  12824. </div>
  12825. </div>
  12826. </div>
  12827. <div class="cell border-box-sizing text_cell rendered">
  12828. <div class="prompt input_prompt">
  12829. </div>
  12830. <div class="inner_cell">
  12831. <div class="text_cell_render border-box-sizing rendered_html">
  12832. <p><strong>Question 1:</strong> What custom features did you choose for the features_custom set and why?</p>
  12833. <p><strong>Answer 1:</strong> Added new features - <em>norm-polar-lr</em> &amp; <em>norm-polar-rr</em> which normalize the polar radius to account for differences in arm length.</p>
  12834. <p>Also, as noted from the lectures, delta between values in consecutive time steps gives us an indication of speed. Hence, delta of normalized data might be a good metric.</p>
  12835. </div>
  12836. </div>
  12837. </div>
  12838. <div class="cell border-box-sizing text_cell rendered">
  12839. <div class="prompt input_prompt">
  12840. </div>
  12841. <div class="inner_cell">
  12842. <div class="text_cell_render border-box-sizing rendered_html">
  12843. <p><a id='part1_test'></a></p>
  12844. <h3 id="Features-Unit-Testing">Features Unit Testing<a class="anchor-link" href="#Features-Unit-Testing">&#182;</a></h3><p>Run the following unit tests as a sanity check on the defined "ground", "norm", "polar", and 'delta"
  12845. feature sets. The test simply looks for some valid values but is not exhaustive. However, the project should not be submitted if these tests don't pass.</p>
  12846. </div>
  12847. </div>
  12848. </div>
  12849. <div class="cell border-box-sizing code_cell rendered">
  12850. <div class="input">
  12851. <div class="prompt input_prompt">In&nbsp;[15]:</div>
  12852. <div class="inner_cell">
  12853. <div class="input_area">
  12854. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">unittest</span>
  12855. <span class="c1"># import numpy as np</span>
  12856. <span class="k">class</span> <span class="nc">TestFeatures</span><span class="p">(</span><span class="n">unittest</span><span class="o">.</span><span class="n">TestCase</span><span class="p">):</span>
  12857. <span class="k">def</span> <span class="nf">test_features_ground</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  12858. <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span> <span class="mi">1</span><span class="p">][</span><span class="n">features_ground</span><span class="p">])</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
  12859. <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">sample</span><span class="p">,</span> <span class="p">[</span><span class="mi">9</span><span class="p">,</span> <span class="mi">113</span><span class="p">,</span> <span class="o">-</span><span class="mi">12</span><span class="p">,</span> <span class="mi">119</span><span class="p">])</span>
  12860. <span class="k">def</span> <span class="nf">test_features_norm</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  12861. <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span> <span class="mi">1</span><span class="p">][</span><span class="n">features_norm</span><span class="p">])</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
  12862. <span class="n">np</span><span class="o">.</span><span class="n">testing</span><span class="o">.</span><span class="n">assert_almost_equal</span><span class="p">(</span><span class="n">sample</span><span class="p">,</span> <span class="p">[</span> <span class="mf">1.153</span><span class="p">,</span> <span class="mf">1.663</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.891</span><span class="p">,</span> <span class="mf">0.742</span><span class="p">],</span> <span class="mi">3</span><span class="p">)</span>
  12863. <span class="k">def</span> <span class="nf">test_features_polar</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  12864. <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span><span class="mi">1</span><span class="p">][</span><span class="n">features_polar</span><span class="p">])</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
  12865. <span class="n">np</span><span class="o">.</span><span class="n">testing</span><span class="o">.</span><span class="n">assert_almost_equal</span><span class="p">(</span><span class="n">sample</span><span class="p">,</span> <span class="p">[</span><span class="mf">113.3578</span><span class="p">,</span> <span class="mf">0.0794</span><span class="p">,</span> <span class="mf">119.603</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.1005</span><span class="p">],</span> <span class="mi">3</span><span class="p">)</span>
  12866. <span class="k">def</span> <span class="nf">test_features_delta</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
  12867. <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span> <span class="mi">0</span><span class="p">][</span><span class="n">features_delta</span><span class="p">])</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
  12868. <span class="bp">self</span><span class="o">.</span><span class="n">assertEqual</span><span class="p">(</span><span class="n">sample</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
  12869. <span class="n">sample</span> <span class="o">=</span> <span class="p">(</span><span class="n">asl</span><span class="o">.</span><span class="n">df</span><span class="o">.</span><span class="n">ix</span><span class="p">[</span><span class="mi">98</span><span class="p">,</span> <span class="mi">18</span><span class="p">][</span><span class="n">features_delta</span><span class="p">])</span><span class="o">.</span><span class="n">tolist</span><span class="p">()</span>
  12870. <span class="bp">self</span><span class="o">.</span><span class="n">assertTrue</span><span class="p">(</span><span class="n">sample</span> <span class="ow">in</span> <span class="p">[[</span><span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">5</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">],</span> <span class="p">[</span><span class="o">-</span><span class="mi">14</span><span class="p">,</span> <span class="o">-</span><span class="mi">9</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">]],</span> <span class="s2">&quot;Sample value found was </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">sample</span><span class="p">))</span>
  12871. <span class="n">suite</span> <span class="o">=</span> <span class="n">unittest</span><span class="o">.</span><span class="n">TestLoader</span><span class="p">()</span><span class="o">.</span><span class="n">loadTestsFromModule</span><span class="p">(</span><span class="n">TestFeatures</span><span class="p">())</span>
  12872. <span class="n">unittest</span><span class="o">.</span><span class="n">TextTestRunner</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">suite</span><span class="p">)</span>
  12873. </pre></div>
  12874. </div>
  12875. </div>
  12876. </div>
  12877. <div class="output_wrapper">
  12878. <div class="output">
  12879. <div class="output_area"><div class="prompt"></div>
  12880. <div class="output_subarea output_stream output_stderr output_text">
  12881. <pre>....
  12882. ----------------------------------------------------------------------
  12883. Ran 4 tests in 0.018s
  12884. OK
  12885. </pre>
  12886. </div>
  12887. </div>
  12888. <div class="output_area"><div class="prompt output_prompt">Out[15]:</div>
  12889. <div class="output_text output_subarea output_execute_result">
  12890. <pre>&lt;unittest.runner.TextTestResult run=4 errors=0 failures=0&gt;</pre>
  12891. </div>
  12892. </div>
  12893. </div>
  12894. </div>
  12895. </div>
  12896. <div class="cell border-box-sizing text_cell rendered">
  12897. <div class="prompt input_prompt">
  12898. </div>
  12899. <div class="inner_cell">
  12900. <div class="text_cell_render border-box-sizing rendered_html">
  12901. <p><a id='part2_tutorial'></a></p>
  12902. <h2 id="PART-2:-Model-Selection">PART 2: Model Selection<a class="anchor-link" href="#PART-2:-Model-Selection">&#182;</a></h2><h3 id="Model-Selection-Tutorial">Model Selection Tutorial<a class="anchor-link" href="#Model-Selection-Tutorial">&#182;</a></h3><p>The objective of Model Selection is to tune the number of states for each word HMM prior to testing on unseen data. In this section you will explore three methods:</p>
  12903. <ul>
  12904. <li>Log likelihood using cross-validation folds (CV)</li>
  12905. <li>Bayesian Information Criterion (BIC)</li>
  12906. <li>Discriminative Information Criterion (DIC) </li>
  12907. </ul>
  12908. </div>
  12909. </div>
  12910. </div>
  12911. <div class="cell border-box-sizing text_cell rendered">
  12912. <div class="prompt input_prompt">
  12913. </div>
  12914. <div class="inner_cell">
  12915. <div class="text_cell_render border-box-sizing rendered_html">
  12916. <h5 id="Train-a-single-word">Train a single word<a class="anchor-link" href="#Train-a-single-word">&#182;</a></h5><p>Now that we have built a training set with sequence data, we can "train" models for each word. As a simple starting example, we train a single word using Gaussian hidden Markov models (HMM). By using the <code>fit</code> method during training, the <a href="https://en.wikipedia.org/wiki/Baum%E2%80%93Welch_algorithm">Baum-Welch Expectation-Maximization</a> (EM) algorithm is invoked iteratively to find the best estimate for the model <em>for the number of hidden states specified</em> from a group of sample seequences. For this example, we <em>assume</em> the correct number of hidden states is 3, but that is just a guess. How do we know what the "best" number of states for training is? We will need to find some model selection technique to choose the best parameter.</p>
  12917. </div>
  12918. </div>
  12919. </div>
  12920. <div class="cell border-box-sizing code_cell rendered">
  12921. <div class="input">
  12922. <div class="prompt input_prompt">In&nbsp;[16]:</div>
  12923. <div class="inner_cell">
  12924. <div class="input_area">
  12925. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">warnings</span>
  12926. <span class="kn">from</span> <span class="nn">hmmlearn.hmm</span> <span class="k">import</span> <span class="n">GaussianHMM</span>
  12927. <span class="k">def</span> <span class="nf">train_a_word</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">num_hidden_states</span><span class="p">,</span> <span class="n">features</span><span class="p">):</span>
  12928. <span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">&quot;ignore&quot;</span><span class="p">,</span> <span class="n">category</span><span class="o">=</span><span class="ne">DeprecationWarning</span><span class="p">)</span>
  12929. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features</span><span class="p">)</span>
  12930. <span class="n">X</span><span class="p">,</span> <span class="n">lengths</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_word_Xlengths</span><span class="p">(</span><span class="n">word</span><span class="p">)</span>
  12931. <span class="n">model</span> <span class="o">=</span> <span class="n">GaussianHMM</span><span class="p">(</span><span class="n">n_components</span><span class="o">=</span><span class="n">num_hidden_states</span><span class="p">,</span> <span class="n">n_iter</span><span class="o">=</span><span class="mi">1000</span><span class="p">)</span><span class="o">.</span><span class="n">fit</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">lengths</span><span class="p">)</span>
  12932. <span class="n">logL</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">score</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">lengths</span><span class="p">)</span>
  12933. <span class="k">return</span> <span class="n">model</span><span class="p">,</span> <span class="n">logL</span>
  12934. <span class="n">demoword</span> <span class="o">=</span> <span class="s1">&#39;BOOK&#39;</span>
  12935. <span class="n">model</span><span class="p">,</span> <span class="n">logL</span> <span class="o">=</span> <span class="n">train_a_word</span><span class="p">(</span><span class="n">demoword</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">features_ground</span><span class="p">)</span>
  12936. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of states trained in model for </span><span class="si">{}</span><span class="s2"> is </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">demoword</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">))</span>
  12937. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;logL = </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">logL</span><span class="p">))</span>
  12938. </pre></div>
  12939. </div>
  12940. </div>
  12941. </div>
  12942. <div class="output_wrapper">
  12943. <div class="output">
  12944. <div class="output_area"><div class="prompt"></div>
  12945. <div class="output_subarea output_stream output_stdout output_text">
  12946. <pre>Number of states trained in model for BOOK is 3
  12947. logL = -2331.1138127433196
  12948. </pre>
  12949. </div>
  12950. </div>
  12951. </div>
  12952. </div>
  12953. </div>
  12954. <div class="cell border-box-sizing text_cell rendered">
  12955. <div class="prompt input_prompt">
  12956. </div>
  12957. <div class="inner_cell">
  12958. <div class="text_cell_render border-box-sizing rendered_html">
  12959. <p>The HMM model has been trained and information can be pulled from the model, including means and variances for each feature and hidden state. The <a href="http://math.stackexchange.com/questions/892832/why-we-consider-log-likelihood-instead-of-likelihood-in-gaussian-distribution">log likelihood</a> for any individual sample or group of samples can also be calculated with the <code>score</code> method.</p>
  12960. </div>
  12961. </div>
  12962. </div>
  12963. <div class="cell border-box-sizing code_cell rendered">
  12964. <div class="input">
  12965. <div class="prompt input_prompt">In&nbsp;[17]:</div>
  12966. <div class="inner_cell">
  12967. <div class="input_area">
  12968. <div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">show_model_stats</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
  12969. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of states trained in model for </span><span class="si">{}</span><span class="s2"> is </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">))</span>
  12970. <span class="n">variance</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">covars_</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">)])</span>
  12971. <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">):</span> <span class="c1"># for each hidden state</span>
  12972. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;hidden state #</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
  12973. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;mean = &quot;</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">means_</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
  12974. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;variance = &quot;</span><span class="p">,</span> <span class="n">variance</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
  12975. <span class="nb">print</span><span class="p">()</span>
  12976. <span class="n">show_model_stats</span><span class="p">(</span><span class="n">demoword</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span>
  12977. </pre></div>
  12978. </div>
  12979. </div>
  12980. </div>
  12981. <div class="output_wrapper">
  12982. <div class="output">
  12983. <div class="output_area"><div class="prompt"></div>
  12984. <div class="output_subarea output_stream output_stdout output_text">
  12985. <pre>Number of states trained in model for BOOK is 3
  12986. hidden state #0
  12987. mean = [ -1.12415027 69.44164191 17.02866283 77.7231196 ]
  12988. variance = [ 19.70434594 16.83041492 30.51552305 11.03678246]
  12989. hidden state #1
  12990. mean = [ -11.45300909 94.109178 19.03512475 102.2030162 ]
  12991. variance = [ 77.403668 203.35441965 26.68898447 156.12444034]
  12992. hidden state #2
  12993. mean = [ -3.46504869 50.66686933 14.02391587 52.04731066]
  12994. variance = [ 49.12346305 43.04799144 39.35109609 47.24195772]
  12995. </pre>
  12996. </div>
  12997. </div>
  12998. </div>
  12999. </div>
  13000. </div>
  13001. <div class="cell border-box-sizing text_cell rendered">
  13002. <div class="prompt input_prompt">
  13003. </div>
  13004. <div class="inner_cell">
  13005. <div class="text_cell_render border-box-sizing rendered_html">
  13006. <h5 id="Try-it!">Try it!<a class="anchor-link" href="#Try-it!">&#182;</a></h5><p>Experiment by changing the feature set, word, and/or num_hidden_states values in the next cell to see changes in values.</p>
  13007. </div>
  13008. </div>
  13009. </div>
  13010. <div class="cell border-box-sizing code_cell rendered">
  13011. <div class="input">
  13012. <div class="prompt input_prompt">In&nbsp;[18]:</div>
  13013. <div class="inner_cell">
  13014. <div class="input_area">
  13015. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">my_testword</span> <span class="o">=</span> <span class="s1">&#39;CHOCOLATE&#39;</span>
  13016. <span class="n">model</span><span class="p">,</span> <span class="n">logL</span> <span class="o">=</span> <span class="n">train_a_word</span><span class="p">(</span><span class="n">my_testword</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different parameters</span>
  13017. <span class="n">show_model_stats</span><span class="p">(</span><span class="n">my_testword</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span>
  13018. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;logL = </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">logL</span><span class="p">))</span>
  13019. </pre></div>
  13020. </div>
  13021. </div>
  13022. </div>
  13023. <div class="output_wrapper">
  13024. <div class="output">
  13025. <div class="output_area"><div class="prompt"></div>
  13026. <div class="output_subarea output_stream output_stdout output_text">
  13027. <pre>Number of states trained in model for CHOCOLATE is 3
  13028. hidden state #0
  13029. mean = [ 0.58333333 87.91666667 12.75 108.5 ]
  13030. variance = [ 39.41055556 18.74388889 9.855 144.4175 ]
  13031. hidden state #1
  13032. mean = [ -9.30211403 55.32333876 6.92259936 71.24057775]
  13033. variance = [ 16.16920957 46.50917372 3.81388185 15.79446427]
  13034. hidden state #2
  13035. mean = [ -5.40587658 60.1652424 2.32479599 91.3095432 ]
  13036. variance = [ 7.95073876 64.13103127 13.68077479 129.5912395 ]
  13037. logL = -601.3291470028619
  13038. </pre>
  13039. </div>
  13040. </div>
  13041. </div>
  13042. </div>
  13043. </div>
  13044. <div class="cell border-box-sizing text_cell rendered">
  13045. <div class="prompt input_prompt">
  13046. </div>
  13047. <div class="inner_cell">
  13048. <div class="text_cell_render border-box-sizing rendered_html">
  13049. <h5 id="Visualize-the-hidden-states">Visualize the hidden states<a class="anchor-link" href="#Visualize-the-hidden-states">&#182;</a></h5><p>We can plot the means and variances for each state and feature. Try varying the number of states trained for the HMM model and examine the variances. Are there some models that are "better" than others? How can you tell? We would like to hear what you think in the classroom online.</p>
  13050. </div>
  13051. </div>
  13052. </div>
  13053. <div class="cell border-box-sizing code_cell rendered">
  13054. <div class="input">
  13055. <div class="prompt input_prompt">In&nbsp;[19]:</div>
  13056. <div class="inner_cell">
  13057. <div class="input_area">
  13058. <div class=" highlight hl-ipython3"><pre><span></span><span class="o">%</span><span class="k">matplotlib</span> inline
  13059. </pre></div>
  13060. </div>
  13061. </div>
  13062. </div>
  13063. </div>
  13064. <div class="cell border-box-sizing code_cell rendered">
  13065. <div class="input">
  13066. <div class="prompt input_prompt">In&nbsp;[20]:</div>
  13067. <div class="inner_cell">
  13068. <div class="input_area">
  13069. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">math</span>
  13070. <span class="kn">from</span> <span class="nn">matplotlib</span> <span class="k">import</span> <span class="p">(</span><span class="n">cm</span><span class="p">,</span> <span class="n">pyplot</span> <span class="k">as</span> <span class="n">plt</span><span class="p">,</span> <span class="n">mlab</span><span class="p">)</span>
  13071. <span class="k">def</span> <span class="nf">visualize</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="p">):</span>
  13072. <span class="sd">&quot;&quot;&quot; visualize the input model for a particular word &quot;&quot;&quot;</span>
  13073. <span class="n">variance</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">covars_</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">)])</span>
  13074. <span class="n">figures</span> <span class="o">=</span> <span class="p">[]</span>
  13075. <span class="k">for</span> <span class="n">parm_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">means_</span><span class="p">[</span><span class="mi">0</span><span class="p">])):</span>
  13076. <span class="n">xmin</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">min</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">means_</span><span class="p">[:,</span><span class="n">parm_idx</span><span class="p">])</span> <span class="o">-</span> <span class="nb">max</span><span class="p">(</span><span class="n">variance</span><span class="p">[:,</span><span class="n">parm_idx</span><span class="p">]))</span>
  13077. <span class="n">xmax</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">max</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">means_</span><span class="p">[:,</span><span class="n">parm_idx</span><span class="p">])</span> <span class="o">+</span> <span class="nb">max</span><span class="p">(</span><span class="n">variance</span><span class="p">[:,</span><span class="n">parm_idx</span><span class="p">]))</span>
  13078. <span class="n">fig</span><span class="p">,</span> <span class="n">axs</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">,</span> <span class="n">sharex</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">sharey</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
  13079. <span class="n">colours</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">rainbow</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">))</span>
  13080. <span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">ax</span><span class="p">,</span> <span class="n">colour</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="n">axs</span><span class="p">,</span> <span class="n">colours</span><span class="p">)):</span>
  13081. <span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">xmin</span><span class="p">,</span> <span class="n">xmax</span><span class="p">,</span> <span class="mi">100</span><span class="p">)</span>
  13082. <span class="n">mu</span> <span class="o">=</span> <span class="n">model</span><span class="o">.</span><span class="n">means_</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">parm_idx</span><span class="p">]</span>
  13083. <span class="n">sigma</span> <span class="o">=</span> <span class="n">math</span><span class="o">.</span><span class="n">sqrt</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">diag</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">covars_</span><span class="p">[</span><span class="n">i</span><span class="p">])[</span><span class="n">parm_idx</span><span class="p">])</span>
  13084. <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">mlab</span><span class="o">.</span><span class="n">normpdf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">mu</span><span class="p">,</span> <span class="n">sigma</span><span class="p">),</span> <span class="n">c</span><span class="o">=</span><span class="n">colour</span><span class="p">)</span>
  13085. <span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">{}</span><span class="s2"> feature </span><span class="si">{}</span><span class="s2"> hidden state #</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">parm_idx</span><span class="p">,</span> <span class="n">i</span><span class="p">))</span>
  13086. <span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
  13087. <span class="n">figures</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">plt</span><span class="p">)</span>
  13088. <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">figures</span><span class="p">:</span>
  13089. <span class="n">p</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
  13090. <span class="n">visualize</span><span class="p">(</span><span class="n">my_testword</span><span class="p">,</span> <span class="n">model</span><span class="p">)</span>
  13091. </pre></div>
  13092. </div>
  13093. </div>
  13094. </div>
  13095. <div class="output_wrapper">
  13096. <div class="output">
  13097. <div class="output_area"><div class="prompt"></div>
  13098. <div class="output_png output_subarea ">
  13099. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYQAAAEICAYAAABfz4NwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
  13100. AAALEgAACxIB0t1+/AAAIABJREFUeJzsnXl8lcXV+L8nC1vYF8NOUFDEBdnFpWClFtxwAVxwt1J8
  13101. q7UudfnpW9DW1tpqlWpV7FsVd9wVqShqRBSURRQBkS1IgCA7hCWQ5Pz+mIlcLndLcm/uTXK++Tyf
  13102. PHfmzMyZuc+dM9szI6qKYRiGYaQlWwHDMAwjNTCDYBiGYQBmEAzDMAyPGQTDMAwDMINgGIZheMwg
  13103. GIZhGIAZBKOaISLZIjJdRHaIyAPJ1ieRiMg4EXkugv9CERkUxm+QiORHCPu0iPwpDmoaNQgzCElE
  13104. RC4WkTkiUigi60TkvyJykvcLWRmIiIpIl4DP3UXkbRHZ5ivJj0XkhKAwdXx8S0Vkp4jkich/RCQn
  13105. QOZMEfnS+28SkedFpH2A/xUiMiNKfp4WkWIRaRPg9rjPX6GI7BWRfQGf/ysiOT5PhUHXBWGSGQ1s
  13106. BBqr6s0RCzgKyagUfX4/FpFdIvKdiAyuaFyqepSq5sZRvYQS/OzGIJ8rIr+KU9qTROQ0EakrIgVB
  13107. fnX972G7iBSIyE3xSLM6YgYhSfiH7iHgz0A20BF4FDi7HHEcBnwGLAA6A22BN4D3RWRAgOirPt6L
  13108. gSZAD2AOcKqPZzjwgtenJXAUUATMEJFmMeqSBZwPbAMuKXNX1TGq2lBVG/q8vlz2WVWHBkTRNMC9
  13109. oaq+HCapTsAiTYE3KkUkowLBXgS+AloAdwKvikiruCpmhKI37pk/Fvg2yG8c0BX3bJ0C3CoiQ6pU
  13110. u1RBVe2q4gtXKRcCIyLIjAOeC+GuQBd//ywwJYTMY8B0fz8Y2A10CJOOAKuAW4Pc03A/nHv85yuA
  13111. GRH0vQxYDdwAfBtrnoAcn6eMGMrtaWAfsNeX32Cv5+3AcmATMAloHhDmFaAAZ6imA0d599FBcb0T
  13112. XL4Baf7J3w8C8oHbfJzPevczgfnAVuBz4Ngw+h+OM7SNAtymA2MilNckYCKwA1gI9AnwzwMG+/v6
  13113. XtctwCLg90B+gGxPYJ6P52XgpbJ8RcuDT+cW4Btfji8D9cLo3AX4xMttxDUAyvKpwE5f3hcAzYDJ
  13114. wAav92SgvZe/FygB9nj5R7x7N+ADYDOwBBgZw3PTDFjh768F7g/yXwucFvD5HuClZNUPybySrkBt
  13115. vIAhQDERKkFiMwgFwJUhZE7xP6b6wH3AJxHS6ebj7BzC725gpr+/gsgG4UPgflxvpxjoHUueKIdB
  13116. 8PJPB1VkNwCzgPZAXeAJ4MUA/6uARt7vIWB+uLiCyzdYBmcQioG/+vjq4yraH4H+QDpwOa4CrRtC
  13117. 93OBxUFu/wT+GeEZ2AOc7uP+CzArwD+P/QbhPuBToDnQAWfM871fHZzRvxHIBIbjjGFZviLmwd9/
  13118. ieuBNgcWE96IvYjr+aQB9YCTIpRtC1yvsoH/jl4B3gzwzwV+FfA5C9fouBLI8HpvBLqH0eVUnIEr
  13119. xBn+rf7/Tn8/EGcsFMgOCHc+sCBZ9UMyLxsySg4tgI2qWhxFbqSIbA28gvxbAutChFuH+0E292mF
  13120. kgmMgzAy6wL8wyIiHXFG6AVVXY8zDpdFCxfExqC8HhljuDHAnaqar6pFuEp0eNlwjqr+R1V3BPj1
  13121. EJEm5dQtkFJgrKoWqepuXE/jCVX9QlVLVPUZXC/g+BBhG+JazoFsx1WG4ZihqlNUtQTXI+wRRm4k
  13122. cK+qblbV1cD4AL/jcYbgIVXdp6qvArMD/GPJw3hVXauqm4F3gOPC6LEPN/TSVlX3qGrYeSdV3aSq
  13123. r6nqLlXdgesVDAwnj+vF5KnqU6parKpfAa8BI8LE/6GqNgXe9DLtcMatpao2VdVPcN8JHPi9RPtO
  13124. aixmEJLDJqBlDGPQk/yD+9MV5L8RaBMiXBtcxbXFpxVKJjAOwsi0CfCPxKW4lu98//l54GIRyYwh
  13125. bBktg/K6OMZwnYA3AgzmYlzvKFtE0kXkPhFZLiLbcZUBxGDkIrBBVfcEpX9zkNHugGtNB1MINA5y
  13126. a4IbxglH4AToLqBemOemLa71XMaqIL816pu/IfxjyUOwHg0Jza24Ycgv/Sqoq8LIISINROQJEVnl
  13127. v5/pQFMRSQ8TpBPQP0jPUUDrMPHne5mLgGdwvaBOwDoRedCLFfr/gd9LtO+kxmIGITnMxLXAzqlk
  13128. PNMI3ToaiRvq2eVl+gWuGApiCW5c/IB4RCQN13X+MAY9LgMO9Ss0CoAHcZXu6THlonKsBoYGGZN6
  13129. qroGN4k+DDfX0AQ3PAWuwgI3VBDMLtwQRhnBlU1wmNW4lnlg+g1U9cUQcS/ElVNg67OHd68s63CV
  13130. eBkdg/zaiYiE8S9PHiKiqgWqeo2qtgV+Dfwrwsqim4EjgP6q2hj4mXcP9/2sxg1/BurZUFWvDaNL
  13131. e9zw7DTfmJoA/MaHu8nLbMGVT2DPK17fSbXDDEISUNVtwB+AR0XkHN9SyhSRoSJyfzmiuhs4QUTu
  13132. FZHmItJIRK7HVdC3+bSm4Sbh3hCR3iKS4eXGiMhVvtV4C3CXuGWw9USkNfBvXKvpHwHpifcPvAYA
  13133. hwH9cMMIxwFH41YtlXfYqCI8DtwrIp28gq1EZJj3a4QzvJtwlfyfg8KuBw4NcpuP692k+5UmkYYw
  13134. AJ4ExohIf3FkicgZQZU+AKr6vY9/rC+784BjcMMelWUScIeINPPG//oAv5m4uY/f+ufsPNz3Ve48
  13135. RENERgQ0PrbgKvVS/zm4vBvhFjxsFZHmwNig6ILlJwOHi8ilPh+ZItI3yvBib9xkOkAv3EqjYCbi
  13136. nv9mPq5rcHNHtQ4zCElCVR8AbgLuwq2yWA1chxvvjDWOpcBJuBZNHq6lcz7wS1X9LEB0ODAFtzpk
  13137. G27CsQ+u94C6JZ6X4iYdN+FWqdQHTlTVTQHxnID7AQdeVwNvqeoC3zosUNUC4GHgTP9Dj4WtcuB7
  13138. CLGuBX8YeBu31HYHboK5v/ebiBsaWePzNCso7P8B3f3wQ1m53wCchZt0HEWU70NV5+AqkEdwFeAy
  13139. 3AR8OC7Elf0W3CTxcFXdEDWX0bkbl9eVwPu4+YYyHfcC53m9NuNW+LxeiTxEoi/whYgU4r6XG1R1
  13140. hfcbBzzjy3skbpK/Pm5YchbwXlBcD+Pmg7aIyHg/z3AargzX4oaxyib4w9EbmOd7R90I3fIfi1ul
  13141. tgo3kX2/qgbrUiuQA4cVDcMwjNqK9RAMwzAMwAyCYRiG4TGDYBiGYQBmEAzDMAxPRTbnShotW7bU
  13142. nJycZKsREzt37iQrKyvZaqQcVi6hsXIJjZVLaMpbLnPnzt2oqlE3UaxWBiEnJ4c5c0ItI049cnNz
  13143. GTRoULLVSDmsXEJj5RIaK5fQlLdcRGRVdKlqZhAMoyaydydsmtmCz76E+s2hQStomgPZx8IB7xYb
  13144. RoIxg2AYSeL7yfDlI5CXCyVFxxy0SX/bPnD8jdB9BKSXZ1cow6ggZhAMo4opLID3boCFk6BpZ+j7
  13145. P7Cr3dcMvboHRdth5wZY8wV88TC8Pgqm3Q7nPgs50TbRMIxKYquMDKMKWfQqPHokfPcW/PxeuG4J
  13146. /PJBaNZ7C/WaQpOO0La3MxK/WQwXTYbM+jDxVJj5INjGAkYiMYNgGFXEvP+DV0ZCiyNgzNdw8v+L
  13147. PBQkaXD4GXDNbDjibHj/Znj1Ati3u+p0NmoXZhAMowr44p/wzq+gyy/h8o+g5RGxh63bGEa+Bqfe
  13148. 53oYr14AJfsSp6tRezGDYBgJZuaD8N5vodu5cMGbkNkgephgROCk2+D0R+H7d+Dtq0BLo4czjPJg
  13149. k8qGkUC+e8sN9Rw1Es57HtIq+Yvrey3s2QIf3Ql1m8LQ8bY01YgfZhAMI0GsX+BWCbXrB+c8U3lj
  13150. UMZJd8DuzTDzAWh2KAy4MT7xGoYNGRlGAti1EV46243/X/AGZNSLX9wi8Iu/QbdzYNqtsPrz+MVt
  13151. 1G5iMggiMkRElojIMhG5PYS/iMh47/+NiPQK8MsTkQUiMl9E5gS4NxeRD0Rkqf/fLD5ZMozkoqXw
  13152. 6oWwYx1c+CY0ahs9THkRgWFPuWWqr17gDJBhVJaoBkFE0oFHgaFAd+AiEekeJDYU6Oqv0cBjQf6n
  13153. qOpxqtonwO124ENV7Yo7yP0gQ2MY1ZHPH4CVH8Lpj7jhokRRrymMeMW9yPb6KCgtSVxaRu0glh5C
  13154. P2CZqq7wZ7O+BAwLkhkGTFTHLKCpiLSJEu8w4Bl//wxwTjn0NoyUZN1XbsK327nQ8+rEp9eml5tY
  13155. Xv4+fP73xKdn1GxiMQjtcAfAl5Hv3WKVUWCaiMwVkdEBMtmqus7fFwDZMWttGCnIvl2upd6gJZz1
  13156. ZNWt/ul1DRx5HuT+AX4M3hDJMMpBVawyOklV14jIIcAHIvKdqk4PFFBVFZGQL+V7IzIaIDs7m9zc
  13157. 3IQrHA8KCwurja5VSU0ul6Xju7BxcXuO+dvXfLlgS7nCVrZcml6SSdqHfXn2vCJ6/mseaRk1Y4+L
  13158. mvy8VIZElUssBmEN0CHgc3vvFpOMqpb9/1FE3sANQU0H1otIG1Vd54eXfgyVuKpOACYA9OnTR6vL
  13159. 3ui2j3toamq55H0Cn7wB/W+AIbf0KHf4eJRL+1J4ZXgd0mcOZOD/ViqqlKGmPi+VJVHlEsuQ0Wyg
  13160. q4h0FpE6wIXA20EybwOX+dVGxwPbfEWfJSKNAEQkCzgNftrl923gcn9/OfBWJfNiGElh3263LUWz
  13161. Q92Gdcmi+/lw9EUw/R4omJ88PYzqS1SDoKrFwHXAVGAxMElVF4rIGBEZ48WmACuAZcCTwP9492xg
  13162. hoh8DXwJvKuq73m/+4BfiMhSYLD/bBjVjtxxsHmZmzeok+TTHk9/BOq3gLd/BaXFydXFqH7ENIeg
  13163. qlNwlX6g2+MB9wr8JkS4FUDI/rOqbgJOLY+yhpFqrJ0LM/8OPX8FnX+ebG3ciWtDx7t3E74YDwNu
  13164. SrZGRnXC3lQ2jApSsg/evhqysuG0vyVbm/10HwGHnwkf/y9szUu2NkZ1wgyCYVSQLx6G9V+7HUjr
  13165. NU22NvsRcTpJGrx7rR2qY8SOGQTDqABb8yB3LBwxDI48N9naHEyTjm6Ce9l78O2LydbGqC6YQTCM
  13166. cqIKU34DCAz9Z7K1CU/f30DbvjD1RthdvtcijFqKGQTDKCeLX4OlU+CUP0KTDtHlk0VaOpw1AXZt
  13167. gmm2U5gRA2YQDKMc7NkG//0ttO4J/a9PtjbRaX2ce1lu3gTbJtuIjhkEwygHH94BO9e7lne8DrxJ
  13168. NKfcDY07wORf21nMRmTMIBhGjKyeCXMeh37XQ9s+0eVThToN3QtrP37rTlkzjHCYQTCMGCjZB5NH
  13169. Q+N2bu6gunHE2W5H1E/udm9VG0YozCAYRgzMfMC1sIc+AnUbJVubijH0n5BeByaPsXcTjNCYQTCM
  13170. KGxe5lrW3c6FbsFHQ1UjGrWFwX91p7l9/Ux0eaP2YQbBMCKgpW57ivS6qf3OQaz0Hg0dT4L3b4ad
  13171. ITecN2ozZhAMIwJznoBV0+G0B9z8QXVH0uDMCbC30C2fNYxAzCAYRhi2roJpt8Khg6HnVcnWJn60
  13172. OhJ+9gdY+DIsejXZ2hipREwGQUSGiMgSEVkmIge98+gPxhnv/b8RkV7evYOIfCwii0RkoYjcEBBm
  13173. nIisEZH5/jo9ftkyjMqh6tbtq1bt+chVxUm3uaWz715rQ0fGfqIaBBFJBx4FhgLdgYtEpHuQ2FCg
  13174. q79GA49592LgZlXtDhwP/CYo7D9U9Th/HXDegmEkk3lPwvKpcOpfoGlOsrWJP2kZcM4zULTddkQ1
  13175. 9hNLD6EfsExVV6jqXuAlIHitxTBgojpmAU3LzktW1XkAqroDd+JaDRiJNWoym753G8IdOhj6HXTs
  13176. U82hVXf3TsXi121HVMMRi0FoB6wO+JzPwZV6VBkRyQF6Al8EOF/vh5j+IyLNYtTZMBJGyT54fRRk
  13177. 1HMtaKnhs2wDbob2x8O7/2OH6RgxHqFZWUSkIfAa8DtV3e6dHwP+CKj//wBw0NSdiIzGDUORnZ1N
  13178. bm5uVahcaQoLC6uNrlVJqpfLyv/ksHZODt3Hfcvc7zfC91WTbjLLpe319Vg3ug9PnbmTHg/NJy0j
  13179. dcaPUv15SRaJKpdYDMIaIHCT3/beLSYZEcnEGYPnVfX1MgFVXV92LyJPApNDJa6qE4AJAH369NFB
  13180. gwbFoHLyyc3NpbroWpWkcrnk5cL05+G4K2HY2KOrNO1kl0uHdHjtwiboRwMZ9OekqXEQyS6XVCVR
  13181. 5RJLh3g20FVEOotIHeBC4O0gmbeBy/xqo+OBbaq6TkQE+D9gsao+GBhARNoEfDwX+LbCuTCMSrI9
  13182. 3x1M3+JwGPJwsrWpeo6+AHpdAzPug+UfJFsbI1lENQiqWgxcB0zFTQpPUtWFIjJGRMZ4sSnACmAZ
  13183. 8CTwP979ROBS4OchlpfeLyILROQb4BTgxrjlyjDKQcleeGUE7NsFI1+vvnsVVZYhD7l3FF4f5d7B
  13184. MGofMc0h+CWhU4LcHg+4V+Cg9RiqOgMIuYJbVS8tl6aGkSCm3gT5s2DEK65CrK1kNnAG8d/94aWz
  13185. 4arP3NbZRu2hhq+hMIzIzJ0Asx+FAbdA9+HJ1ib5tDwCRkxyO7u+canby8moPZhBMGotS95xL2V1
  13186. GQqD/5JsbVKHw05zezd99yZ8/Idka2NUJdXkEEDDiC/5s9wkcpvebqiouhyHWVX0v8H1Ej69Fxq0
  13187. guNviB7GqP7Yz8CodWxYDC+c6c4HuHgy1MlKtkaphwic+Tjs3gxTf+fKqNevkq2VkWhsyMioVRR8
  13188. DU8PdD2CS96DrEOSrVHqkpYB578IXYbAO6NhwQvJ1shINGYQjFpD/hfwzCDIqAtXTofmXZKtUeqT
  13189. URdGvgadfuYmmec8Hj2MUX0xg2DUCpZ/AM8OhvrN4cpP3QtoRmxkNoCL33WT7+9eCx/dZbuj1lTM
  13190. IBg1GlX47G/w/BC3jfUV02vmdtaJpk4WXPime5v503vhzcth3+5ka2XEG5tUNmosewvdecgLJ7l3
  13191. DIY9ZS9aVYa0DDjzCWjSET7+X1g3D4a/BIdU7bZPRgKxHoJRI1kxDR471h0ROfivMHySGYN4IAI/
  13192. uwsumQq7NsCTfWH2Y/YCW03BDIJRo9i1Cd66Ep79BaRnwuW5cOKtNe8IzGRz2Gkw5hvoNBCm/A/8
  13193. 5yRYOyfZWhmVxQyCUSPYsxVyx8H4Q+HrZ+GkO2DM19Dp5GRrVnNpmA2jprihuC0r4Ml+8NbVsGVl
  13194. sjUzKorNIRjVmq2rYN6/YfYjzigceR4MutvGtasKSYPjrnDl/skf4YuH4eunofsIOOH30LZ3sjU0
  13195. yoMZBKPasXsLLHsPvn4Glr/v3I44CwaOgzY9k6paraVuYzjtb3D875xRmPsELHwZsnvA0RfB0RdC
  13196. 007J1tKIRkwGQUSGAA8D6cC/VfW+IH/x/qcDu4ArVHVepLAi0hx4GcgB8oCRqrql8lkyahp7C934
  13197. 9OqZsHwq/DADtAQat4eBf4CeV7mVL0byadwOfnE/nHwnfD0Rvn0BPrzdXYccDZ1PdVf7/vaWeCoS
  13198. 1SCISDrwKPALIB+YLSJvq+qiALGhQFd/9cedl9w/StjbgQ9V9T4Rud1/vi1+WTOqEyV7Yfsa2L4a
  13199. tq2GTd/DxsXu2rBo/yqW7GPhpNvh8DOhbV9IS0+u3kZo6jWB/te7a8sKWPgKrJzmeg5f+BPpGrVz
  13200. PboW3dxb480Pg8YdoGFr1+OwhQBVTyw9hH7AMlVdASAiLwHDgECDMAyY6A/KmSUiTf0RmTkRwg4D
  13201. BvnwzwC5JMggrJ0Dm5clIubw/LjoEL4tqNo0YyXsW6ZB7gfIqf/s/2vpgfdaAqUl/n+xu0r2uYq+
  13202. ZC8U73YvMq1Z2Y31D0PRDijaDrs3wa6N7j4QSYNmh0LLbtDtXGg/ANr1gwYt4lcORtXQ7FA46TZ3
  13203. Fe9xO82unQsFX0HBfPcWeUnRgWEy6kODllCS2Ye8Ds5A1MmCzIaQWR8y6kF6Xbe1RloGpGX6/+kg
  13204. 6f5/mrsQb1yC/8MBx3cdYIDCuSeRTgOhUZvocpUhFoPQDlgd8Dkf1wuIJtMuSthsVV3n7wuA7FCJ
  13205. i8hoYDRAdnY2ubm5Mah8IEsf6srat9qVO1zl6M7iKk4xVZGMUtLqlpJWpxTJbExhw0LSG5SQ3qCY
  13206. zEOLadlzH5lN9lGnRRF1Dymibqsi6rfZQ1qd/Yvb1wBrFiQvD4mmsLCwQs92taU3NO8NzXENiqKN
  13207. ddmztj5FG+qwd3Nd9m6qw77tmezZClu3FFOyJp2S3emU7HGX7hNK96WBpkhtXQUc89dvaN5vM5C4
  13208. 5yUlJpVVVUUkZLtVVScAEwD69OmjgwYNKnf8fbrBnvuiy8WTL7/8kn79+lVtouUhzO/ooNZQcEvJ
  13209. t64CW17iW2M/tc58Sy3dt95E0ihb4Zyb+zkV+Q7LWL9+PSNGjOCrr75i9OjRPPDAAxWOK5XIzc09
  13210. qFzGjRvHsmXLeO6550KGOeqoo3j00UdDlmdubi6XXHIJ+fn5IcNeccUVtG/fnj/96U+VVT2hhCqX
  13211. MlRdj7RkH5Tu8z3Tkv29Vcp6r6UH9m7LesLBPeDAeEO5J5vG7Y/96eXKSOVSKVQ14gUMAKYGfL4D
  13212. uCNI5gngooDPS4A2kcKWyfj7NsCSaLr07t1bqwsff/xxVJnnn39ee/furVlZWdq6dWsdMmSIfvrp
  13213. p6qqOnbsWB01atRBYQBdunTpT58XLlyoZ511ljZu3FgbNmyogwYN0s8+++yAMEVFRTp27Fjt0qWL
  13214. NmjQQDt16qRXXnmlrly58ieZd955R/v27asNGjTQ5s2b68UXX6yrV6/+yf+pp57SE088MWJ+Lr/8
  13215. ck1PT9e1a9f+5PbrX/9as7KyNCsrSzMzMzU9Pf2nz0OGDNGVK1cq8JNb2fXSSy+FTOOee+7Rc889
  13216. V0tLSyPqEguXX3653nnnnZWOpzysXLlSBw0apPXr19cjjjhCP/jgA1UN/byEewZi4eOPP9Z27dqF
  13217. 9U9G3oOf3WgMHDhQb7nllrikPWLECJ06daru2bNHs7OzD/B7+eWXdcCAAVq/fn0dOHBgXNJLNLHU
  13218. L4EAczRK/aqqiEbZtlBEMoDvgVNxPffZwMWqujBA5gzgOtwqo/7AeFXtFymsiPwN2KT7J5Wbq+qt
  13219. UXTZAKyKqHDq0BLYGME/G2iNy892XFukMdAIN7TWFqgLBL/m0xv4Fijy/kcCG3DDburTbYcr950+
  13220. TBcg06e1C7fiq7mX3wg0w833rAK2eP/2XpdFQAnQwse9JEx+0oAePs51wPoQMm19Hr8LcKsDHAPM
  13221. DRNvMJ2AfcDaGOUjkQPsjVNcsdINKMT9Hpp4Hb4FmnLw8xLuGYiFRkBn4Jsw/jlUfd4Dn91YOMLL
  13222. 5sUh7aOBxbjybI/7fZTRCDdaUg/3fIZ7xlOJaPVLMJ1UtVVUqVisBq6i/x5YDtzp3cYAY/y94FYT
  13223. LQcWAH0ihfXuLYAPgaXANJxBiEmf6nARwSLjKoJCYEQEmXHAcyHcFeji758FpoSQeQyY7u8HA7uB
  13224. DmHSEZwhuDXIPQ33473Hf74CmBFB38tw80U3AN9GyNOmILccn6eMGMr0aZwx2OvLb7DX83b/fG0C
  13225. JgU+S8ArOGO5DZgOHOXdRwfF9U5w+Qak+Sd/PwhnrG/zcT7r3c8E5gNbgc+BY8PofziugmsU4Dbd
  13226. /5YOel58eU0CJgI7gIVBv608YLC/r+913YIz4r8H8gNkewLzfDwvAy+V5StaHnw6t+CMyzYfvl6Y
  13227. PHYBPvFyG4GXA/KpuEZKIXABriEyGdeg2eLv23v5e3ENkVIv/4h37wZ8AGzGVdwjY3humgEr/P21
  13228. wP1h5H4F5FZF/VDZK9TzEpd4k52xmnpF+sKAIUAxESpBYjMIBcCVIWRO8T+m+sB9wCcR0unm4+wc
  13229. wu9uYKa/v4LIBuFD4H5cz6cY6B0mTxU2CF7+6aCK7AZgFq7VVxc3fPligP9VuBZgXeAhYH64uILL
  13230. N1gGZxCKgb/6+OrjKtofcT3jdOByXAVaN4Tu5wKLg9z+6a9wBmEPrlGVDvwFmBXgn8d+g3Af8Cmu
  13231. 59cBZ8zzvV8dnNG/EddTHI4zhmX5ipgHf/8lrsfSHNfSHhPm+3kRuBNnqOsBJ0Uo2xbA+UAD/x29
  13232. ArwZ4J8L5AV8zsI1Oq7Eteh74oxO9zC6nIozcIU4w7/V/9/p7wcGydd6g2B7GSWHFsBGVS2OIjdS
  13233. RLYGXkH+LXHDM8Gsw/0gm/u0QskExkEYmXUB/mERkY44I/SCqq7HGYfLooULYmNQXo+MMdwYXM8z
  13234. X1WLcJXocD9ciar+R1V3BPj1EJEm5dQtkFJgrKoWqepuXE/jCVX9QlVLVPUZXC/g+BBhG+JazoFs
  13235. x1WG4ZihqlNUtQTXI+wRRm4kcK+qblbV1cD4AL/jcYbgIVXdp6qv4oZvy4glD+NVda2qbgbeAY4L
  13236. o8c+3LBeW1Xdo6ozwmVMVTep6muquktVd+B6BQPDyeN6MXmq+pSqFqvqV8BrwIgw8X+oqk2BN71M
  13237. O5xxa6mqTVX1kwhp1UrMICSOCRH8NgEtyyqtCEzyD+5PV5D/RtyEfDBtcBXXFp9WpNXLZeOQ4eKJ
  13238. ZZzyUlzLd77//DxwsYhkhpBdGiaOlkF5jXXVbifgjQCDuRjXO8oWkXQRuU9ElovIdvaPRUc1chHY
  13239. oKp7gtK/Ochod8C1poMpxI1RB9IEN4wT7nkJfJtlF1AvzHPTlgOXeK8K8lujvmkZwj+WPATrEW4z
  13240. 8Vtxw5BfishCEbkqjBwi0kBEnhCRVf77mQ409S+0ljE9SM/+QXqOws3FhYo/38tchHvX6UcfxzoR
  13241. eTCcXtWESPVLhTGDkCDULZcNx0xcC+ycSiYzjdCto5G4oZ5dXqafiLQPE8cS3Lj4AfGIWyt6Pq61
  13242. H43LgENFpEBECoAHcZXu6SFk4/2K4GpgaJAxqaeqa4CLcS9ADmb/BC7sX0wbakXFLtwQRhnBlU1w
  13243. mNW4lnlg+g1U9cUQcS/ElVNgj6AHsDDK8xIL63CVeBkdg/za+S1mQvmXJw8RUdUCVb1GVdsCvwb+
  13244. JSLhTq/P8jvrAAAgAElEQVS+GTdx3F9VGwM/8+6B30+gQViNG/4M1LOhql4bRpf2uOHZab4xNQH4
  13245. jQ93U3nzlkrE4XkJiRmEJKCq24A/AI+KyDm+pZQpIkNF5P5yRHU3cIKI3CsizUWkkYhcj6ugb/Np
  13246. TcNNwr0hIr1FJMPLjRGRq3yr8RbgLhG5WETqiUhr4N+41uw/AtIT7x94DQAOw73Rfpy/jgZeoPzD
  13247. RhXhceBeEenkFWwlIsO8XyOc4d2Eq+T/HBR2PXBokNt8XO8m3e/DFWkIA+BJYIyI9BdHloicEVTp
  13248. A6Cq3/v4x/qyOw+3wuq1mHMbnknAHSLSzBv/6wP8ZuLmPn7rn7PzcN9XufMQDREZEdD42IKr1Mve
  13249. MAwu70a4BQ9b/d5mY4OiC5afDBwuIpf6fGSKSN8ow4u9cZPpAL2Ag05t8N91Pdy8RJr/bkL1bms8
  13250. ZhCShKo+ANwE3IVbZbEat3T3zXLEsRQ4CdfKzMO1BM8HfqmqnwWIDgem4FaHbMNNOPbB9R5Q1Zdx
  13251. wz434irPRbgJ0xNVdVNAPCfgfsCB19XAW6q6wLcOC1S1ALeh4Zn+hx4LW0WkMOCKtQX3MPA28L6I
  13252. 7MBNMJe9DT8RNzSyxudpVlDY/wO6++GHsnK/ATgLN+k4iijfh6rOAa4BHsFVgMtwE/DhuBBX9ltw
  13253. k8TDVXVD1FxG525cXlcC7+PmG8p03Auc5/XajFvh83ol8hCJvsAXIlKI+15uUL91DW4O5xlf3iNx
  13254. k/z1ccOSs4D3guJ6GDcftEVExvt5htNwZbgWN4xVNsEfjt7APN876obrpQVzKe5Zfgw42d8/Wa5c
  13255. 1xCivodgGIZh1A6sh2AYhmEAZhAMwzAMjxkEwzAMA6ikQRCRISKyRESWiduPKNi/m4jMFJEiEbml
  13256. PGENwzCMqqXCk8r+5ZHvCTgNDbfj6aIAmUNwL4KcA2xR1b/HGjYULVu21JycnArpW9Xs3LmTrKys
  13257. ZKuRcli5hMbKJTRWLqEpb7nMnTt3o8awuV1lzkOIepKaqv4I/ChuN9RyhQ1FTk4Oc+YctIw4JUnY
  13258. fuXVHCuX0Fi5hMbKJTTlLRcRiWmX6MoMGYU7JS3RYQ0jLpRQynxW8yrz+IZ8iilJtkqGkVRS4sS0
  13259. SEgcjtBMBrXuSMQYSYVyKRVlXdti8jvso6iekl4MizLWMXnf17RZm0nHVZmkl1bt0YypUC6piJVL
  13260. aFLxCM01HLh3SnvvFtewGocjNJOBdXVDkwrlMpkFLOcH2tOMk+lCl4xWrGQTczJX8V2nApp0asW5
  13261. HIeEO2c0AaRCuaQiVi6hSVS5VMYgzAa6ikhnXGV+IW4zsUSHNYwK8zX5zOMHTuAwTuWInyr9Q2nJ
  13262. obTkU5bxMUtoQxMGHLTNkWHUbCpsEFS1WESuA6biDtX4j7qjMcd4/8f9JmlzcJuklYrI73CHWWwP
  13263. FbaymTGMSKxnO++ygE405+ccHrIHcBKHUcA2prGYbBpzaKV2yjaM6kWl5hBUdQpu07RAt8cD7gtw
  13264. w0ExhTWMRFHEPl5hHvXI5Hx6khZmPYUgnE0PNlLIa8xjNCfThPpVrK1hJAd7U9moFeSylC3s5Hx6
  13265. 0pB6EWXrksFI+rCPEj6uFuetG0Z8MINg1Hi2s5s5rKIH7elEi5jCtCCLvuTwDWvYwI4Ea2gYqYEZ
  13266. BKPGM4NlKMrJdC1XuBM5jDpkkMv3CdLMMFILMwhGjWYru5jHanrSgWYHnIwZnQbU4Xg6s5gC1rI1
  13267. QRoaRupgBsGo0XzKMgThZMId6xuZAXSmPpl8bL0EoxZgBsGosWxmJ/PJpzcdaVzBlUJ1yeREDmM5
  13268. G1jF5jhraBiphRkEo8byOctJRziJwyoVT19yaEAdZrEiurBhVGPMIBg1kt3s5RvWcAztoi4zjUYm
  13269. 6fSiA9+zni3sipOGhpF6mEEwaiTzyaeYUvqSE5f4+tAJEOYQ0y7ChlEtMYNg1DhKUWaTR0ea05rG
  13270. cYmzMfU5ktZ8xWr22TbZRg3FDIJR41jKj2xlN/3i1Dsooy857GEfC2Le1NcwqhdmEIwax2zyaEQ9
  13271. jiA7rvF2pBmtacyX5KFU7OhZw0hlzCAYNYqNFLKCjfSmI+lxfrwFoR85/MgOW4Jq1EjMIBg1ijms
  13272. Ip00etMxIfEfRVvqk2mTy0aNxAyCUWPYRwlfk8+RtCaLuglJI5N0etCe7yigkKKEpGEYycIMglFj
  13273. WMQ6iiimV4J6B2X0oiOlKF+Tn9B0DKOqMYNg1BjmsooWZNGJ5glNpyUN6URz5vGDTS4bNQozCEaN
  13274. YD3byWcrvegY8mjMeNOLjmxhFyvZlPC0DKOqMINg1Ajm8QPppNEj9ImtcedIWlOfTOba5LJRgzCD
  13275. YFR79lHCN6yhO61pQJ0qSTPDTy4vYT2F7KmSNA0j0ZhBMKo9C1lbJZPJwZRNLs+3yWWjhlApgyAi
  13276. Q0RkiYgsE5HbQ/iLiIz3/t+ISK8AvzwRWSAi80VkTmX0MGo3c/mBlmTRMcGTycG0pCE5tGAuP1Bq
  13277. k8tGDaDCBkFE0oFHgaFAd+AiEekeJDYU6Oqv0cBjQf6nqOpxqtqnonoYtZu1bGMNW+lDpyqZTA6m
  13278. D53Yxm6W8WOVp20Y8aYyPYR+wDJVXaGqe4GXgGFBMsOAieqYBTQVkTaVSNMwDmAOeWSSzrFVNJkc
  13279. zBFk05C6zLbJZaMGkFGJsO2A1QGf84H+Mci0A9YBCkwTkRLgCVWdECoRERmN612QnZ1Nbm5uJVSu
  13280. OgoLC6uNrlVJPMtlX4byzYBdZK/PYNb3n8UlzorQPKeU5Tkb+O+sj6i/p2JtLHteQmPlEppElUtl
  13281. DEJlOUlV14jIIcAHIvKdqk4PFvKGYgJAnz59dNCgQVWsZsXIzc2luuhalcSzXGayglIWc3bbAWS3
  13282. jc+5BxVhO3t4mI/IOL4NgziyQnHY8xIaK5fQJKpcKjNktAboEPC5vXeLSUZVy/7/CLyBG4IyjJhQ
  13283. lDmsogPNyI7TITgVpTH16EY28+3wHKOaUxmDMBvoKiKdRaQOcCHwdpDM28BlfrXR8cA2VV0nIlki
  13284. 0ghARLKA04BvK6GLUctYxga2sCtuR2RWlj50Yjf7WMjaZKtiGBWmwkNGqlosItcBU4F04D+qulBE
  13285. xnj/x4EpwOnAMmAXcKUPng28ISJlOrygqu9VOBdGrWM2eWRRlyNpnWxVAMihBa1oyBfk0YP2SVnx
  13286. ZBiVpVJzCKo6BVfpB7o9HnCvwG9ChFsB9KhM2kbtZT3bWcYGBnF43A/BqSiCMIBDeZtvWM5GutAq
  13287. 2SoZRrlJjV+TYZSDz1hOHdJTZriojGNoRyPq8RnLkq2KYVQIMwhGtWILu1jIWnrRkfpkJludA0gn
  13288. jePpzCo2s4atyVbHMMqNGQSjWjGTFaSRxgAOTbYqIelFR+qRwWcsT7YqhlFuzCAY1YZCipjPao71
  13289. QzOpSF0y6EMnvqOAjRQmWx3DKBdmEIxqwxespJhSTuCwZKsSkX50JoM0PrdeglHNMINgVAt2sIcv
  13290. yaM7bWhBVrLViUhD6tKbTnxNPuvZnmx1DCNmzCAY1YKPWUIJpfycI5KtSkz8jC7UJZMPWGznLhvV
  13291. BjMIRsqzlm3MJ5/+dKZ5ivcOyqhPHX5GV1awkWVsSLY6hhETZhCMlEZR3mcRDajDyXRJtjrloi+d
  13292. aE4DPmAxpZQmWx3DiIoZBCOlWUwBP7CZUziCein23kE00kljMEeykULmHbALvGGkJmYQjJRlD/t4
  13293. n0Vk04ieB2yaW304gmw60ZwP+Y6t7Eq2OoYRETMIRkqiKO/wDYUUcQbHkFZNN4sThLPpgQKvM9+G
  13294. joyUxgyCkZLM5QcWU8DPOYL2NEu2OpWiGQ04g6PJZwvTbZ8jI4Uxg2CkHAVsZyqL6EKrlN2iorwc
  13295. QzuOpR2fspRVbE62OoYREjMIRkpRSBGvMo/6ZDKMHjXqXIGhHE0zGvAa89hk21oYKYgZBCNl2MEe
  13296. JjKTHexhOL3Iom6yVYordcngAvqgKBOZxSZ2JlslwzgAMwhGSrCdPUxkFtvYw8X0oyPNk61SQmhF
  13297. Iy7leEq8UdhsRsFIIcwgGEknny08w0x2UMQo+tGphhqDMg6hEZfSnxJKeYqZLOPHZKtkGIAZBCOJ
  13298. FFPCh3zHU3xOCaVcUoN7BsFk05jLOZ4s6vACs1natYi9FCdbLaOWU6kzlQ2jIpRQyiLWMYNlbKCQ
  13299. 42jPaXSvdm8iV5ZWNOJXnMhHLGFW25U8znRO4DB60J5M0pOtnlELqVQPQUSGiMgSEVkmIreH8BcR
  13300. Ge/9vxGRXrGGNWoWirKe7azqtJeH+Yg3mE8pyoX04Wx61DpjUEYG6ZxGd479uh4NqMMUvuUhPuQj
  13301. vmMNWym1nVKNKqTCPQQRSQceBX4B5AOzReRtVV0UIDYU6Oqv/sBjQP8YwxrVEEXZSzE7KGIThWxk
  13302. J+vZzko2sZMi6AyH0YqzyKELrWrUstLK0HRrOsM4kR/YzExWMoPlzGA59ckkhxZk05hWNKQFDWlE
  13303. XeqRaWVnxJ3KDBn1A5ap6goAEXkJGAYEVurDgImqqsAsEWkqIm2AnBjCxo0FrGEVmxIRdVjWHl5E
  13304. Id9UaZoVIVL7UwN28lf/VwqUUkopSgmlFFPKXkrYRzFFFLOTvZQEbc/QiLp0pgWH0pKCmUsZMqBf
  13305. orJTrRGETrSgEy3YSREr2chyNrKKTSym4ADZNIQs6lKXDOqQTh0ySCfNX0IaggT8d/ET0Yikonmp
  13306. Lr+jqqAfnTmERglNozIGoR0csIVjPq4XEE2mXYxhARCR0cBogOzsbHJzc8ut6MrOe1nfumon7LR5
  13307. KZuL8qs0zUQg+y2Cq1C07BLSSkFKIb1USC+B+iVC473p1NmbQeY+ocEuof6uNDJKBNjGVrZRXLir
  13308. Qt9hTaewsDBkuTQBjiWNkrQG7GpQyu4Gyt46yr46yt7MYkrS97E7HQrTFU2DUgFNU1RwF/xU02sq
  13309. 1vhRqCm/o3hQvHgDTbe6uaVwz0ulUdUKXcBw4N8Bny8FHgmSmQycFPD5Q6BPLGFDXb1799bqwscf
  13310. f5xsFVKSypZLQUGBnnzyydqwYUO96aab4qNUChCqXMaOHaujRo0KG6Z79+5hy/Pjjz/Wdu3ahQ17
  13311. +eWX65133lleNasc+x2FprzlAszRGOr1ykwqr4ED9iRu791ikYklbI3nhRdeoE+fPjRs2JA2bdow
  13312. dOhQZsyYAcC4ceO45JJLDgojIixbtn+DtEWLFnH22WfTpEkTGjVqxCmnnMLnn39+QJi9e/cybtw4
  13313. unbtSlZWFjk5OVx11VXk5eX9JDN58mT69etHVlYWLVq0YNSoUeTn72+ZPf3005x00kkR83PFFVeQ
  13314. kZHBunXrfnIbM2YMDRs2pGHDhtSpU4fBgwf/9Hno0KHk5eUhIj+5lV0vv/xyyDQmTJhAy5Yt2b59
  13315. Ow888EBEfaJxxRVXcNddd1UqjvKSl5fHKaecQoMGDejWrRvTpk2rcFwLFy5k0KBB8VMuwQQ/u9EY
  13316. NGgQ7777blzSHjlyJO+//z5FRUW0bt36AL9bbrmFrl270qhRI7p168bEiRPjkmZ1RJzxqEBAkQzg
  13317. e+BUXGU+G7hYVRcGyJwBXAecjhsSGq+q/WIJGybNDcCqCilc9bQENkbwzwZa4/KzHde7bww0wg2h
  13318. tQXqAiuDwvUGvgWKvP+RwAagwMfREjck9z389BpsFyDTp7ULSAeae/mNQDPcvM4qYIv3b+91WQSU
  13319. AC183EvC5CcN6OHjXAesDyHT1ufxuwC3OsAxwNww8QbTCdgHrI1RPhI5wN44xRUr3YBC3HPfxOvw
  13320. LdCUg5+XcM9ALDQCOkPYAfgcqj7vgc9uLBzhZfPikPbRwGJcebbH/T7KaAtsBvYAWbhFMEshpV8j
  13321. j1a/BNNJVVtFlYqlGxHuwlX03wPLgTu92xhgjL8X3Gqi5cACoE+ksDXpIkIXDVcRFAIjIsiMA54L
  13322. 4a5AF3//LDAlhMxjwHR/PxjYDXQIk47gDMGtQe5puB/vPf7zFcCMCPpehpsXugH4NkKeNgW55fg8
  13323. ZcRQpk/jjMFeX36DvZ63++doEzAJaB4Q5hWcsdwGTAeO8u6jg+J6J7h8A9L8k78fhDPWt/k4n/Xu
  13324. ZwLzga3A58CxYfQ/HFfBNQpwm+5/Mwc9L768JgETgR3AwqDfUB4w2N/X97puwRnx3wP5AbI9gXk+
  13325. npeBl8ryFS0PPp1bcMZlmw9fL0weuwCfeLmNwMsB+VRcJVsIXIBriEzGNWi2+Pv2Xv5eXEOk1Ms/
  13326. 4t27AR/gKvAlwMgYnptmwAp/fy1wfxT5t4GbE1k/VPYK9bzEJd5kZ6ymXpG+MGAIUEyESpDYDEIB
  13327. cGUImVP8j6k+cB/wSYR0uvk4O4fwuxuY6e+vILJB+BC4H9fzKQZ6h8lThQ2Cl386qCK7AZiFa/XV
  13328. BZ4AXgzwvwrXWq4LPATMDxdXcPkGy+AMQjHwVx9ffVxF+yOuB5wOXI6rQOuG0P1cYHGQ2z/9Fc4g
  13329. 7ME1ntKBvwCzAvzz2G8Q7gM+xfX8OuCMeb73q4Mz+jfieorDccawLF8R8+Dvv8S1pJvjWtpjwnw/
  13330. LwJ34gx1PQ6cQwwu2xbA+UAD/x29ArwZ4J8L5AV8zsI1Oq7ELYjpiTM63cPocirOwBXiDP9W/3+n
  13331. vx8YIkx9XA93SKLqhnhcoZ6XeFy2dUVyaAFsVNVoS59GisjWwCvIvyXu4Q1mHe4H2dynFUomMA7C
  13332. yKwL8A+LiHTEGaEXVHU9zjhcFi1cEBuD8npkjOHG4HqY+apahKtEh/thSVT1P6q6I8Cvh4g0Kadu
  13333. gZQCY1W1SFV343oaT6jqF6paoqrP4HoBx4cI2xDXcg5kO0RcSzhDVaeoagmuR9gjjNxI4F5V3ayq
  13334. q4HxAX7H4wzBQ6q6T1VfxQ3TlhFLHsar6lpV3Qy8AxwXRo99uGG9tqq6R1VnhMuYqm5S1ddUdZeq
  13335. 7sD1CgaGk8f1YvJU9SlVLVbVr4DXgBFh4v9QVZsCb3qZdjjj1lJVm6rqJyGCPQ58DUyNoEeNxQxC
  13336. 4pgQwW8T0LKs0orAJP/g/nQF+W8E2oQI1wZXcW3xaYWSCYyDMDJtiG2c8lJcy3e+//w8cLGIhHr9
  13337. eGmYOFoG5XVxDOmCq3zeCDCYi3G9o2wRSReR+0RkuYhsZ/9YdFQjF4ENqronKP2bg4x2B1xrOphC
  13338. 3BxKIE1wwzjhnpfAFxB2AfXCPDdtOXAp96ogvzXqm5Yh/GPJQ7AeDcPoeytuGPJLEVkoIleFkUNE
  13339. GojIEyKyyn8/04Gm/sXVMqYH6dk/SM9RuLm4UPHne5mLgGdwvaBOwDoReTCE/N9wcw0jg8oqFYlU
  13340. v1QYMwgJQlUjfWEzcS2wcyqZzDRCt45G4oZ6dnmZfiLSPkwcS3Dj4gfEIyJpuO78hzHocRlwqIgU
  13341. iEgB8CCu0j09hGy8z5BcDQwNMib1VHUNcDHuhcfB7J/Ahf3vYIX60e/CDWGUEVzZBIdZjWuZB6bf
  13342. QFVfDBH3Qlw5BfYIegALozwvsbCOA1fudQzyayciEsa/PHmIiKoWqOo1qtoW+DXwLxHpEkb8ZtzE
  13343. cX9VbQz8zLsHfj+BBmE1bvgzUM+GqnptGF3a44Znp/nG1ATgNz7cTYGyInI3bmeF01R1e3nzXdXE
  13344. 4XkJiRmEJKCq24A/AI+KyDm+pZQpIkNF5P5yRHU3cIKI3CsizUWkkYhcj6ugb/NpTcNNwr0hIr1F
  13345. JMPLjRGRq3xL6BbgLhG5WETqiUhr4N+41uw/AtIT7x94DQAOw725fpy/jgZeoPzDRhXhceBeEenk
  13346. FWwlIsO8XyOc4d2Eq+T/HBR2PRx0Rud8XO8mXUSGEHkIA+BJYIyI9Pd7d2WJyBlBlT4Aqvq9j3+s
  13347. L7vzcCusXos5t+GZBNwhIs288b8+wG8mbu7jt/45Ow/3fZU7D9EQkREBjY8tuEq97NX14PJuhFvw
  13348. sFVEmgNjg6ILlp8MHC4il/p8ZIpI3yjDi71xk+kAvYA5IXS+A9d4GKyqVbulQYphBiFJqOoDwE3A
  13349. XbhVFqtxS3TfLEccS4GTcK3MPFxL8Hzgl6r6WYDocGAKbnXINtyEYx9c7wFVfRk37HMjrvJchJtc
  13350. OzHoB3IC7gcceF0NvKWqC3zrsEBVC4CHgTP9Dz0WtopIYcB1U/Qg4NN5G3hfRHbgJpjL3nqfiBsa
  13351. WePzNCso7P8B3f3wQ1m53wCchZt0HEWU70NV5wDXAI/gKsBluAn4cFyIK/stuEni4aq6IWouo3M3
  13352. Lq8rgfdx8w1lOu4FzvN6bcat8Hm9EnmIRF/gCxEpxH0vN6jfogY3h/OML++RuEn++rhhyVnAe0Fx
  13353. PYybD9oiIuP9PMNpuDJcixvGKpvgD0dvYJ7vHXXD9dKC+TOux7Qs4Pn7f+XNeE2gwu8hGIZhGDUL
  13354. 6yEYhmEYgBkEwzAMw2MGwTAMwwDMIBiGYRieanWmcsuWLTUnJyfZasTEzp07ycrKSrYaKYeVS2is
  13355. XEJj5RKa8pbL3LlzN2oMm9tVK4OQk5PDnDkHLSNOSXJzc6vV1sRVhZVLaKxcQmPlEprylouIxLRL
  13356. tA0ZGUZ52LIFOneGrCxo0wa6d4dXX022VoYRF8wgGEZ5GDsWfvgBrr4azjoLVOHXv3aGwjCqOWYQ
  13357. DCNWFiyAf/0Lrr0Wxo+HCRPgpZecMbj33mRrZxiVxgyCYcSCKlx/PTRtCvfcs9+9Rw+44gr45z9h
  13358. xYqwwQ2jOmAGwTBi4ZVX4JNPXE+gedD2TH/8I2RkwB13JEc3w4gTZhAMIxpFRXDzzdCzJ/zqVwf7
  13359. t2sHt9wCkybBzJlVr59hxAkzCIYRjalTIT/f9QTS00PL/P73cMghcN99VaubYcQRMwiGEY1XXoFm
  13360. zeC008LLNGwIF13kjMf2lD9fxTBCYgbBMCKxZw+89Racey5khjoRNIDhw93w0rvvVo1uhhFnzCAY
  13361. RiTefx927IARIc9xP5ATTnAvq9mLakY1xQyCYURi0iQ3XHTqqdFl09JcT+K//4WdOxOvm2HEGTMI
  13362. hhGOPXvg7bdjGy4qY/hw2L3bGQXDqGaYQTCMcEyd6oaLRo6MPczJJ0OrVjZsZFRLzCAYRjheecW9
  13363. hPbzn8ceJiPD9SgmT3Y9BcOoRiTMIIjIEBFZIiLLROT2EP7dRGSmiBSJyC2J0sMwKkTZcNE558Q+
  13364. XFTG8OFuDmHq1MToZhgJIiEGQUTSgUeBoUB34CIR6R4kthn4LfD3ROhgGJUiN9cNF51/fvnDDhrk
  13365. ehavvRZvrQwjoSSqh9APWKaqK1R1L/ASMCxQQFV/VNXZwL4E6WAYFee996BePTjllPKHzcyE0093
  13366. cZSWxl83w0gQiToxrR2wOuBzPtC/IhGJyGhgNEB2dja5ubmVVq4qKCwsrDa6ViXVpVz6vvEGRccc
  13367. wzdffFGh8Id07Ej3jRuZ++ST7DjiiKjy1aVcqhorl9AkqlxS/ghNVZ0ATADo06ePVpfj9Ozov9BU
  13368. i3LJy4MffiDrxhsrrutRR8Ff/kLvDRvcATpRqBblkgSsXEKTqHJJ1JDRGqBDwOf23s0wUp+yyeAh
  13369. QyoeR6tW0KuXGzYyjGpCogzCbKCriHQWkTrAhcDbCUrLMOLLe+9Bp04Qw1BPRIYMgVmzYOvW+Ohl
  13370. GAkmIQZBVYuB64CpwGJgkqouFJExIjIGQERai0g+cBNwl4jki0jjROhjGDGzdy98+KGrzEUqF9eQ
  13371. IVBS4uIzjGpAwuYQVHUKMCXI7fGA+wLcUJJhpA4zZ7rlppUZLirj+OOhSRPX46jI8lXDqGLsTWXD
  13372. COS999zbxuV5OzkcGRluU7z33nNnMhtGimMGwTACee89OPFEaByn0cshQ9xpa4sXxyc+w0ggZhAM
  13373. o4yCApg/H375y/jFWRaXrTYyqgFmEAyjjLJKOx7zB2V07Ajdu9t22Ea1wAyCYZQxeTK0awfHHRff
  13374. eIcOhenT3WS1YaQwZhAMA9xy0/ffd3sQVXa5aTBnnuninzYtvvEaRpwxg2AYADNmuBb8GWfEP+4T
  13375. T3TLTydPjn/chhFHzCAYBsC770KdOrGdnVxeMjPd5PKUKbb7qZHSmEEwDHAGYdAgaNgwMfGfeaZb
  13376. xTRvXmLiN4w4YAbBMJYvhyVLEjNcVMbQoW5uwoaNjBTGDIJhvPuu+59Ig9CyJQwYYAbBSGnMIBjG
  13377. u++6nU0POyyx6ZxxBsydC+vWJTYdw6ggZhCM2k1hoTs/+cwzE59WWRpTpkSWM4wkYQbBqN1Mnere
  13378. EUjkcFEZxxwDHTrAO+8kPi3DqABmEIzazfPPQ3Y2nHxy4tMSgbPPdkZo+/bEp2cY5cQMglF72bzZ
  13379. zR9cfLHbqroquOQS2LMHXn21atIzjHJgBsGovbz6qhsuuuSSqkuzf3/o2hUmTqy6NA0jRswgGLWX
  13380. 556DI4+Enj2rLk0RuOwy+OQTWLWq6tI1jBgwg2DUTvLy4NNPXe8g3pvZRaOsR/Lcc1WbrmFEwQyC
  13381. UTt5/nn3f9Soqk87JwcGDnTDRna0ppFCmEEwah+qrnX+s59Bp07J0eGyy+D77+HLL5OTvmGEwAyC
  13382. UfuYOxe++65qJ5ODGT4c6tWzyWUjpTCDYNQ+/v53t6vpiBHJ06FxYzj3XHjhBdi2LXl6GEYAZhCM
  13383. 2sWCBTBpEtxwAzRtmlxdbrkFtm6Ff/wjuXoYhscMglG7uPtuaNQIbrop2ZpAr15u6OiBB8i0XoKR
  13384. AphBMGoP8+fDa6/BjTdC8+bJ1sZxzz2waxcdX3gh2ZoYhhkEoxYxbpwbJvrd75KtyX6OPBIuvZS2
  13385. b74Ja9YkWxujlmMGwagdzJ4Nb70FN9+c/LmDYMaORUpL4U9/SrYmRi3HDIJR89m8GS66CFq3ht/+
  13386. NtnaHEznzqw74wx48kmYNi3Z2hi1GDMIRs2muBguvBB++MHNHzRunGyNQrLimmvc8NGIEe58Z8NI
  13387. AmYQjJrNbbfBBx/AY4/BCSckW5uwlGRluYNzMjPdyWqbNiVbJaMWYgbBqJmUlsJf/woPPgjXXQdX
  13388. X/NAQ8sAAAZRSURBVJ1sjaKTkwNvvul6M+edZ0bBqHLMIBg1j7w8+PnP4fbb4fzznVGoLpxwAjz9
  13389. NHz+ORx1FLz+erI1MmoRCTMIIjJERJaIyDIRuT2Ev4jIeO//jYj0SpQuRi1h6VK3rv/YY2HePHjq
  13390. KXjlFTcMU5246CKYMwfatnUGbfhw+OgjNx9iGAkkIecGikg68CjwCyAfmC0ib6vqogCxoUBXf/UH
  13391. HvP/DSM8paWwY4fb/+eHH9wE7JIlbnXOV1+5sw2GDHFzBsnayTQe9OgBX3wB998Pf/6zmxBv2RLO
  13392. OssZvK5doUsXaNECmjSpfkbPSEkSdZBsP2CZqq4AEJGXgGFAoEEYBkxUVQVmiUhTEWmjquvirs24
  13393. cfv3v68i+u3eDfXrV2ma1YH+u3aFLpeycwFU91+lpe5/cbE76nLvXti58+AzBOrUcdtAPPigW6XT
  13394. vn3iM1IVZGbCnXe6F+nee88ZhTfecD2fYOrVc1dmprv+f3v399pVHcdx/Pnaj2wokWlt4UZ64Y39
  13395. gGJI4M3AKFPRrsKisB84BAUDIVL/gSCoiAiRDISCECKUMMqsXdovS8QsEyJTNOtCms4a3+3VxTnL
  13396. o55tbu18z3ee9wOG59e++3xffnc+58fO+9PcDE1NyVd2AKCxBgOq90BB1yF+jzJ27kxKtheoqA5h
  13397. HvBbZv4U1x79520zD7iiQ5DUC/QCtLe309fXN+HGdFy6xOw6Hy3WajX66zVw+zRSq9VoGeVo1lft
  13398. uNyUXNF0SwvDra24uZmhtjZqs2ZRmzmTwTlzGOjq4u+OjmQHCHDiRPI1zVy4cGHsz/acOdDbC+vW
  13399. 0Xr+PG2nTtF25gwt/f20XLxI88AATYODaGiIploNhofRSKea0liD8TToQD3xe3TZyePHuZj+f477
  13400. eZmkhk/a9g5gB0B3d7d7enom/iKT+Z7/qa+vj0m19QYXueSLXPJFLpe1Z6aLyqWom8qnga7MfGe6
  13401. bKLbhBBCqBO5gFNFSS3AcWApyU7+a+BJ20cz26wANgLLSS4nvWF78Tiv+wfw65Q3uBhzgT/LbkQD
  13402. ilzyRS75Ipd8E83lLtu3j7dRIZeMbNckbQQ+AZqBd2wflbQ+Xb8d2EfSGZwABoBnr+N1x31DjULS
  13403. N7a7y25Ho4lc8kUu+SKXfEXlUtg9BNv7SHb62WXbM9MGNhT180MIIUxMPKkcQggBiA6hSDvKbkCD
  13404. ilzyRS75Ipd8heRSyE3lEEII00+cIYQQQgCiQwghhJCKDqEgkjZLsqS5mWVb0uquP0l6pMz21Zuk
  13405. VyT9mFa2/VDSrZl1lc0Fxq8MXAWSuiR9IekHSUclbUqX3yZpv6Sf039nl93WMkhqlvSdpI/S+UJy
  13406. iQ6hAJK6gIeBk5lli4A1wN3AMuCttCpsVewH7rF9H8lDi1sgcslUBn4UWAQ8kWZSNTVgs+1FwIPA
  13407. hjSHl4ADthcCB9L5KtoEHMvMF5JLdAjFeA14EcjesV8NvG/7H9u/kDyQN+aT2TcS25/aHinof5Ck
  13408. VAlUPBcylYFtDwIjlYErxfYZ24fS6X6Snd88kix2pZvtAh4rp4XlkdQJrADeziwuJJfoEKaYpNXA
  13409. aduHr1o1WnXXKnoO+DidrnouVX//15A0H7gf+BJoz5TEP8uVNd6q4nWSA8zhzLJCcmn4aqeNSNJn
  13410. QEfOqm3AVpLLRZUzVi6296TbbCO5PFDfASrCtCBpFvAB8ILtv5QpiW7bkir1d/KSVgLnbH8rqSdv
  13411. m6nMJTqESbD9UN5ySfcCC4DD6Qe5EzgkaTEVqO46Wi4jJD0DrASW+vIDMDd8LuOo+vv/j6RWks7g
  13412. Pdsjg0n/PjJwlqQ7gXPltbAUS4BVkpYDNwO3SHqXgnKJS0ZTyPYR23fYnm97Psnp/wO2zwJ7gTWS
  13413. ZkhaQDJ06FclNreuJC0jOe1dZXsgs6rSuZBUAl4oaYGkm0husO8tuU11p+QIaidwzParmVV7gbXp
  13414. 9FpgT73bVibbW2x3pvuTNcDntp+ioFziDKFO0mqvu0mGEa0BG2wPldysenoTmAHsT8+eDtpeX/Vc
  13415. RqsMXHKzyrAEeBo4Iun7dNlW4GVgt6TnSUrfP15S+xpNIblE6YoQQghAXDIKIYSQig4hhBACEB1C
  13416. CCGEVHQIIYQQgOgQQgghpKJDCCGEAESHEEIIIfUvipf89bvnk4cAAAAASUVORK5CYII=
  13417. "
  13418. >
  13419. </div>
  13420. </div>
  13421. <div class="output_area"><div class="prompt"></div>
  13422. <div class="output_png output_subarea ">
  13423. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAYoAAAEICAYAAABBBrPDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
  13424. AAALEgAACxIB0t1+/AAAIABJREFUeJzsnXeYVdXV8H9rGjPM0AeHXhSUoKAyiNjh01fBaIgRSewl
  13425. ihhNjCWWYF4wnxo1MVFejS2xoFFssb58ihIQUVFBEQRERooMMPQ21Cnr+2Pvkcv13ju3zdw7M+v3
  13426. POe555zd1j7n3L32XruJqmIYhmEY4chItQCGYRhGemOKwjAMw4iIKQrDMAwjIqYoDMMwjIiYojAM
  13427. wzAiYorCMAzDiIgpCqNBISJFIjJDRLaLyH2plqcuEZHxIvJsBPcFIjIkjNsQESmNEPYpEbkjCWIa
  13428. TQBTFClERM4TkdkiUi4ia0Tk/4nI8d4tZCEhIioivQKu+4rIGyKy1Ree00Tk2KAwOT6+JSKyQ0SW
  13429. i8gTItIjwM8ZIvKpd98oIv8SkS4B7peIyMxa8vOUiFSKSMeAe4/4/JWLyF4RqQi4/n8i0sPnqTzo
  13430. +HmYZEYDG4CWqnpDxAdcC6koLEXk/4rIfP+cxicSl6oeqqrTkyNZ3RP87Ubhf7qIXJ6ktF8UkVNF
  13431. pJmIlAW5NfP/h20iUiYi1ycjzcaEKYoU4T/G+4G7gCKgG/AQ8JMY4jgI+BCYD/QEOgGvAlNE5JgA
  13432. ry/7eM8DWgGHA7OBk308I4HnvDyFwKHAHmCmiLSJUpZ84GxgK3BBzX1VHaOqBapa4PP6Qs21qg4P
  13433. iKJ1wP0CVX0hTFLdgYWaBjNFRSQrjmAlwE3A/yZZHCMyxbhvvj/wVZDbeKA37tsaCtwkIsPqVbp0
  13434. R1XtqOcDV1iXA+dE8DMeeDbEfQV6+fNngMkh/DwMzPDnpwC7gK5h0hFgBXBT0P0M3B/qj/76EmBm
  13435. BHkvAlYC1wJfRZsnoIfPU1YUz+0poALY65/fKV7OW4BvgY3Ai0DbgDAvAWU4BTYDONTfHx0U15vB
  13436. zzcgzTv8+RCgFLjZx/mMv38GMBfYAnwE9I8iL88C42vxM97nZyKwHVgADAxwXw6c4s/zvKybgYXA
  13437. 74DSAL9HAp/7eF4AJtXkq7Y8+HRuBOb55/gCkBtG5l7A+97fBlzFAP/sFdjhn/fPgTbAW8B6L/db
  13438. QBfv/06gCtjt/T/o7/cB3gU2AYuBUVE86zbAUn9+FXBvkPtq4NSA6z8Ck+qzTEj3I+UCNMUDGAZU
  13439. EqFwJDpFUQZcGsLPUP8nywPuBt6PkE4fH2fPEG63Ax/780uIrCimAvfiWkeVQHE0eSIGReH9PxVU
  13440. wF0LzAK6AM2AR4HnA9wvA1p4t/uBueHiCn6+wX5wiqISuMfHl4crgNcBRwOZwMW4grVZLfmIVlHs
  13441. Bk73cf8JmBXgvpx9iuJu4AOgLdAVp+RLvVsOrjJwHZANjMQpyZp8RcyDP/8U12JtCywCxoSR+Xlg
  13442. LE6B5wLHR3i27XCt0Ob+Hb0EvBbgPh24POA6H1cZuRTI8nJvAPqGkeVknOIrx1UItvjfHf78JJwS
  13443. UaAoINzZwPz6LhfS+TDTU2poB2xQ1cpa/I0SkS2BR5B7IbAmRLg1uD9qW59WKD+BcRDGz5oA97CI
  13444. SDeccnpOVdfilMZFtYULYkNQXn8UZbgxwFhVLVXVPbjCdWSNWUhVn1DV7QFuh4tIqxhlC6QaGKeq
  13445. e1R1F65l8qiqfqKqVar6NM5sNziBNAKZqaqTVbUK14I8PIy/UcCdqrpJVVcCEwLcBuMUxP2qWqGq
  13446. LwOfBbhHk4cJqrpaVTcBbwJHhJGjAmfC6aSqu1U1bL+Wqm5U1VdUdaeqbse1Ik4K5x/X6lmuqk+q
  13447. aqWqfgG8ApwTJv6pqtoaeM376YxTeoWq2lpV3wcKvPetAUG34RSX4TFFkRo2AoVR2Lhf9B/090eQ
  13448. +wagY4hwHXEF2mafVig/gXEQxk/HAPdIXAgsUtW5/vpfwHkikh1F2BoKg/K6KMpw3YFXAxTpIlxr
  13449. qkhEMkXkbhH5VkS24QoJiEL5RWC9qu4OSv+GIGXeFVf7TgaBHa87gdww300nXG27hhVBbqvUV5dD
  13450. uEeTh2A5CgjNTThz5qd+VNZlYfwhIs1F5FERWeHfzwygtYhkhgnSHTg6SM7zgQ5h4i/1fs4Fnsa1
  13451. mroDa0Tkr95buf9tGRC0Fc5EZ3hMUaSGj3E1tp8mGM97hK5NjcKZjHZ6P4MCRzAFsRhnd98vHhHJ
  13452. wDXBp0Yhx0XAgX7ESBnwV1xhfHpUuUiMlcDwICWTq6qrcJ33I3B9Ga1wZi5wBRk4k0MwO3GmkBqC
  13453. C6HgMCtxNfnA9Jur6vMJ5Cke1uAK9xq6Bbl1FhEJ4560PKhqmapeoaqdgCuBv0cY6XQDcAhwtKq2
  13454. BE7098O9n5U4M2qgnAWqelUYWbrgzLzv+UrWY8DVPtz13s9m3PMJbKkdjusPMjymKFKAqm4F/ht4
  13455. SER+6mtW2SIyXETujSGq24FjReROEWkrIi1E5Ne4gvtmn9Z7uM6/V0WkWESyvL8xInKZr2XeCNwm
  13456. brhuroh0AP6Bq2X9LSA98e6BxzHAQcAgnDniCOAw3CiqWM1P8fAIcKeIdPcCtheREd6tBU4hb8QV
  13457. /ncFhV0LHBh0by6uNZTpR75EMoUAPA6MEZGjxZEvIj8WkZCmC/+ec3H/vSz/DMPVoGPhReBWEWnj
  13458. KwW/DnD7GNe38huf/s9w7yuuPERCRM4JqJRsxhX21f46+Hm3wA202CIibYFxQdEF+38LOFhELvT5
  13459. yBaRo2oxUxbjOvEBBuBGPgUzEff9t/FxXYHrmzI8pihShKreB1wP3IYb9bESuAZnT402jiXA8bga
  13460. 0HJczehs4DRV/TDA60hgMm60ylZcR+dAXGsDdUNRL8R1dm7EjZrJA45T1Y0B8RyL+2MHHr8EXlfV
  13461. +b42WaaqZcADwBm+AIiGLbL/PIpox7I/ALyBGxK8HdexfbR3m4gzsazyeZoVFPafQF9vxqh57tcC
  13462. Z+I6O8+nlvehqrNxBcuDuIKxBNfxH47Hcc/tXFyn7y7cs0+U23F5XQZMwfVn1Mi4F/iZl2sTbsTR
  13463. vxPIQySOAj4RkXLce7lWVZd6t/HA0/55j8INLsjDmTdnAW8HxfUArr9ps4hM8P0YpwK/wI1UKmPf
  13464. wIJwFAOf+9ZUH0K3FMbhRs2twHWg36uqwbI0aWR/s6VhGIZh7I+1KAzDMIyImKIwDMMwImKKwjAM
  13465. w4iIKQrDMAwjIvEsapYyCgsLtUePHvWe7o4dO8jPz6/3dGvD5IqddJXN5IoNkys25syZs0FV28cd
  13466. QX2uF5LoUVxcrKlg2rRpKUm3Nkyu2ElX2Uyu2DC5YgOYrbbWk2E0Laor4fN/wDqbP2zUAw3K9GQY
  13467. hmPu0/DmFe68yzFQPBoOvwjEqn5GHWCflWE0MKqr4MN7oMMRcOp9sHszvH4pfPb3VEtmNFZMURhG
  13468. A2PRK7BpCZwwFo65Hn61EDoWw9wnUy2Z0VgxRWEYDQhVmPknaHcI9DnL3ROB/hfCms9h/cLUymc0
  13469. TkxRGEYDouRtKJsLx90MGQFrzvY7FyQTvnwmfFjDiBdTFIbRgJj5J2jZBfqfv//9/AOg12kw/1nQ
  13470. 6tBhDSNeTFEYRgNh9Wz47gM49neQmfND9/4XwbZSWD693kUzGjmmKAyjgbBkMiDQ7/zQ7of8BJq1
  13471. hHlmfjKSjCkKw2ggLJsKHY+E5u1Cu2fnwY9GwsKXoWJn/cpmNG5MURhGA2DvDlj5MfQ8ObK/wy+E
  13472. veXw9ev1I5fRNDBFYRgNgO9mQnVF7Yqi+4mQ1w6Wvls/chlNA1MUhtEAWPqe68Dudnxkf5IB3U+A
  13473. Fe/Xj1xG08AUhWE0AJZNdWs65USxgnX3k2DzUjcCyjCSgSkKw0hzdm50k+xqMzvV0P0k97tiRt3J
  13474. ZDQtTFEYRpqzfBqgcGCUiqKoPzRrBcvN/GQkCVMUhpHmLJ0KOQXQ6ajo/Gdkur4M66cwkoUpCsNI
  13475. c5ZNdeakzOzow3Q/ETYuhvK1dSeX0XQwRWEYaczWlW5J8Wj7J2qwfgojmZiiMIw0Ztl/3G+0/RM1
  13476. dBwA2fmmKIzkYIrCMNKY72ZCbms44LDYwmVmQ9djrZ/CSA6mKAwjjVk5E7oeF99e2N1PgnXz3fBa
  13477. w0gEUxSGkabsWA8bvq59NnY4evh+iu9mJk8mo2liisIw0pSVH7nfbifEF77TUZCVa+YnI3ESUhQi
  13478. MkxEFotIiYjcEsJdRGSCd58nIgMC3JaLyHwRmSsisxORwzAaI999AJnNoNPA+MJnNYPOR7t4DCMR
  13479. 4lYUIpIJPAQMB/oC54pI3yBvw4He/hgNPBzkPlRVj1DVOP8KhtF4+W4mdD7KFfjx0v1EWPM57Nme
  13480. PLmMpkciLYpBQImqLlXVvcAkYESQnxHARHXMAlqLSMcE0jSMJkHFTlgzB7rG2T9RQ7cT3B7aNWYs
  13481. w4iHRBRFZ2BlwHWpvxetHwXeE5E5IjI6ATkMo9Gx6lOoroy/I7uGrseAZJr5yUiMrBSmfbyqrhKR
  13482. A4B3ReRrVf3B9CCvREYDFBUVMX369HoWE8rLy1OSbm2YXLGTrrIFy7Xime4gPVhR/SGrp1cmFHdB
  13483. 7wHMe7OajFPmJixXumBy1TOqGtcBHAO8E3B9K3BrkJ9HgXMDrhcDHUPENR64sbY0i4uLNRVMmzYt
  13484. JenWhskVO+kqW7Bcz5yq+vd+yYn7nRtU/2+OasWuxOVKF0yu2ABma5xlvaomZHr6DOgtIj1FJAf4
  13485. BfBGkJ83gIv86KfBwFZVXSMi+SLSAkBE8oFTga8SkMUwGg3Vla5PIVGzUw3dT4SqvbDqs+TEZzQ9
  13486. 4jY9qWqliFwDvANkAk+o6gIRGePdHwEmA6cDJcBO4FIfvAh4VURqZHhOVd+OOxeG0YhYOx/2lidP
  13487. UdTEs2KG2ybVMGIloT4KVZ2MUwaB9x4JOFfg6hDhlgKHJ5K2YTRWahbyS5aiyGvr1or6bgYwNjlx
  13488. Gk0Lm5ltGGnG0inQtje06pa8OLud6MxZ1Yn1ixtNFFMUhpFGVO6B5dPhoNOSG2/3E5w5qyz2gU+G
  13489. YYrCMNKJlR+6yXa9kqwoataLWmHzKYw4MEVhGGlEyTuQkQ09hiQ33padnTlr6ZTkxms0DUxRGEYa
  13490. 8e070O04yClIftwHn+F2zNtbnvy4jcaNKQrDSBPKy2Dtl8nvn6jh4DPdfIpv362b+I3GiykKw0gT
  13491. agrwg06tm/i7He+2Vf0meFqsYdSCKQrDSBOWToHm7aHDEXUTf2Y29BoO3/wvVFfVTRpG48QUhWGk
  13492. AVoN306Bg/4rvv2xo+XgM2Hnerc6rWFEiykKw0gDyr8tYMe6uuufqKHXMMjIgsVmfjJiwBSFYaQB
  13493. m2a1A+DA/6rbdPLauDkV37xZt+kYjQtTFIaRYrQayt7uQPeToEU97P94yE9g/QLYvLTu0zIaB6Yo
  13494. DCPFLPsP7F6dR/GV9ZPewWe638XWqjCixBSFYaSYOY9BVssKfnRW/aTX9iBofyjMfxbcvmGGERlT
  13495. FIaRQsrXwtevQofTysjKrb90B10Dq2e7BQgNozZMURhGCvnyabf0d8cz1tRruodfDPkHwEf31muy
  13496. RgPFFIVhpAiths8fd1uVNu+2s17Tzs6DQb+Bkrdh7bx6TdpogJiiMIwUsWwabCqBAaNTk/5Rv4Ls
  13497. fPjoz6lJ32g4mKIwjBRQXQnTboO8dtD37NTIkNcGikfD/Odhy4rUyGA0DExRGEYK+PBeKJ0Fw/+H
  13498. eu3EDmbwdSACH96TOhmM9McUhWHUM2u+gOnj4NCfQ79zUytLq65QPAZmP+xaFoYRClMUhlGPVO6G
  13499. Vy9wq8T++O+plsZx2n2uQ/31S2Hlx6mWxkhHTFEYRj2xZzu8djGsXwgjnoC8tqmWyJGZA6NegZZd
  13500. 4IWfwpblqZbISDcSUhQiMkxEFotIiYjcEsJdRGSCd58nIgOiDWsYjYmVH8OjR8DCl+HkP7lVXNOJ
  13501. 5oVw3ltQuQeePAHm/csN3zUMSEBRiEgm8BAwHOgLnCsifYO8DQd6+2M08HAMYQ2jQVOxC5ZMhjdH
  13502. u8JXq+GS9+H4NK0WFfaBC/3mSa9eAI8fBRtmFrJrc6olM1JNVgJhBwElqroUQEQmASOAhQF+RgAT
  13503. VVWBWSLSWkQ6Aj2iCJs0Vs9249XjZd3CA/iqLHnyJAuTK3bile37NZHUn6vbJU6r3T7Ulbtc/8OO
  13504. 9bB9lTtWz3H3s/PhiEvh1L9Abqtk5ib5dB4Eo2fD/OfgP2NhzR8OY8EfoN0hbue95u2heTu3pWpm
  13505. M7drXka222xJMtwIKmRffCJhk0qIdP3G6lKu+lpdOBSJKIrOwMqA61Lg6Cj8dI4yLAAiMhrXGqGo
  13506. qIjp06fHLOiS+3uz+vXOMYfbR18WJRC67jC5YqduZcvIqSKncC/NCvdQNKyctoM30vqIrWTkVDPr
  13507. i/DhysvL4/q264wu0P/xDMo+y6ZiWRHbF7Xk2w/yqdyWRWV5dqqlI32/sbqTq98982g7aFMdxR6Z
  13508. RBRFvaCqjwGPAQwcOFCHDBkScxwD+8Duu+OX4dNPP2XQoEHxR1BHNEW51m1Yyy9/ew7zF33BRaNG
  13509. 88eb76s/2XztWCSgBp3hatZZuZDVDLLyMhHJA/KA1kCXqKKePn06wd/2+PHjKSkp4dlnnw0Z5tBD
  13510. D+Whhx76Qbia+C644AJKS0tDhr3kkkvo0qULd9xxR2S5cqYzZOyB+92rroQ921xLqqoCqitcy0o1
  13511. qF+jDlembYrffssu/ckpqJOoa0dV4zqAY4B3Aq5vBW4N8vMocG7A9WKgYzRhQx3FxcWaCqZNm1Yn
  13512. 8f7rX//S4uJizc/P1w4dOuiwYcP0gw8+UFXVcePG6fnnn/+DMIAuWbLke7kWLFigZ555prZs2VIL
  13513. Cgp0yJAh+uGHH+4XZs+ePTpu3Djt1auXNm/eXLt3766XXnqpLlu27Hs/b775ph511FHavHlzbdu2
  13514. rZ533nm6cuXK792ffPJJPe644yLm5+KLL9bMzEx9+eWXv7935ZVXan5+vubn52t2drZmZWV9fz1s
  13515. 2DBdtmyZAt/fqzkmTZoUMo0//vGPetZZZ2l1dXXkhxuGwHd58cUX69ixY+OKJ15uu+02PeywwzQz
  13516. M1PHjRsXUq4awn0D0TBt2jTt3LlzWPdo857Mbz/w242Gk046SR9//PGQbrHKdc455+g777yju3fv
  13517. 1qKiov3cXnjhBT3mmGM0Ly9PTzrppJjiTVSu+gKYrXGW9aqKaJwL0otIFvANcDKwCvgMOE9VFwT4
  13518. +TFwDXA6zrQ0QVUHRRM2TJrrgVQsNlAIbEhynEVAB1x+tuHqXy2BFjhTXCegGbAsKFwx8BWwx4fv
  13519. AKwHynwchTjT3jfADh+mF5Dt09oJZAJtvf8NQBtcv9EKYLN37+JlWQhUAe183IvD5CcDONzHuQ0I
  13520. tX9aqDzlAP2AOWHiDaY7UAGsjtJ/MIHvsgewN4G44qEdTv72wK6AtEN9Y+G+gWhoAfQEwi3514Po
  13521. 8p7Mbz/w242GQ4CNYdKPVa7DgEW459kF9/+ooQXOupKL+w+G+8ajoS7KimRwiKq2iDt0IloGpwC+
  13522. Ab4Fxvp7Y4Ax/lxwo5u+BeYDAyOFTdeDBLVxiPhaAeXAORH8jAeeDXFfgV7+fCMwOYSfh4EZ/vwU
  13523. XIHUNUw6glMQNwXdz8D9qf/ory8BZkaQ9yJcv9O1wK5o84QrsBTIiuK5PYUrZPf653eKl/MW/x1t
  13524. BF4E2gaEeQmnRLcCM4Cv/P3RQXG9Gfx8A9K8w58PwSnxm32cz/j7ZwBzgS3AR0D/KPLyLDA+0jfm
  13525. n9eLwERgO7Ag6D+0HDjFn+d5WTfjlPvvgNIAv0cCn/t4XgAm1eQrUh6A2T6dG3FKZ6sPnxsmX72A
  13526. 972/DcAL/v4M/2x3+Of9c1wF5S1cRWezP+/i/d+Jq6Ds9v4f9Pf7AO8ClbgCfVQUz7oNsNSfXwXc
  13527. G8bf5cD0BP/bSS0rknUkKlfKM9AQjmS/fGCY/9DDFo5EpygqgEtD+Bnq/2R5wN3A+xHS6ePj7BnC
  13528. 7XbgY39+CZEVxVTgXlxLSYHiaPJEDIrC+38qqIC7FpiFqyU2w5k7nw9wvwxXY2wG3A/sDBdX8PMN
  13529. 9oNTFJXAPT6+PFwBvA7XYs4ELsYVrM1qyUe0imI3rlKVCfwJmBXgvpx9iuJu4ANcS7ErTsmXercc
  13530. XGXgOlzLcqT/dmryFTYP7FMUn+JaOG1xNfMxYfL1PDAWp8BzgeMjPNt2wNlAc/+OXgJeC3CfDlwe
  13531. cJ2Pq4xc6uU6EqeM+oaR5WSc4ivHVQi2+N8d/vykIP+mKMIcNjM7NbQDNqhqZS3+RonIlsAjyD0L
  13532. CLXjzRrcH7WtTyvSrjiFAWFCxVMY4v5+iEg3nHJ6TlXX4kxPF9UWLogNQXn9UZThxuBapKWqugdX
  13533. uI705k1U9QlV3R7gliciiQxSrQbGqeoeVd2Fa5k8qqqfqGqVqj6NM60MTiCNQGaq6mRVrQKewZn3
  13534. QjEKuFNVN6nqSmBCgNtgnIK4X1UrVPVlnLm3hmjyMEFVV6vqJuBN4IgwclTgzIOdVHW3qs4MlzFV
  13535. 3aiqr6jqTlXdjmtFnBTOP67Vs1xVn/ThvwBeAc4JE/9UVW0NvOb9dMYpvUJVba2q70dIywjAFEV0
  13536. PJbk+DYChTWFWQRe9B/090eQ+zbc4IBgOuIKtM0+rUijr2vsqeHiicbeeiGwSFXn+utXgPNEJJZx
  13537. lIVBeY12lGF34NUARboI15oqEpFMEblbRL4VkW24QgKiUH4RWK+qu4PSvyFImXfF1b5jIdw3Fjgq
  13538. fyeQG+a76cT+Q85XBLmtUl+1DOEeKQ81cgXLEW78zU04c+anIrJARC4L4w8RaS4ij4rICv9+ZgCt
  13539. /YTcUHQHjvby9fW/5+P66ULFX+r9nAs8jWs1dQfWiMhfw8mVIMkuK5JFQnKZoogCdUN0k8nHuBrb
  13540. TxOM501C16ZG4UxGO4H3gEEiEm6c5mKc3X2/eEQkA2cWmBqFHBcBB4pImYiUAT/BFcanR5WLxFgJ
  13541. DA9SMrmqugo4DzeR8xRcv1APH6ZmGliokRw7caaQGoILoeAwK3E1+cD0m6tqTGuxJuEbW4Mr3Gvo
  13542. FuTWWWS/6W+B7mHzEKtcqlqmqleoaifgSuDvItIrjPcbcB3WR6tqS+BEfz/c+1mJM6PWyNdaVQtU
  13543. 9aowsnTBmXnf85Wsx4CrfbjrY8lXtNRBWZEUEpXLFEUKUNWtwH8DD4nIT33NKltEhotILLsY3w4c
  13544. KyJ3ikhbEWkhIr/GFdw3+7Tew3X+vSoixSKS5f2NEZHLfC3zRuA2ETlPRHJFpAPwD9wIkL8FpCfe
  13545. PfA4BjgIN1P/CH8cBjxH7OaneHgEuFNEunsB24vICO/WAqeQN+IK/7uCwq4FDgy6NxfXGsoUkWFE
  13546. NoUAPA6MEZGj/dpm+SLyYxEJOcLEv+dc3H8vyz/DcDXoWHgRuFVE2vhKwa8D3D7G9a38xqf/M9z7
  13547. iisPkRCRcwIqJZtxhX3N7Irg590CN9Bii4i0BcYFRRfs/y3gYBG50OcjW0SOqsVMWYzrxAcYgOvb
  13548. CJY507+TLCDDv5N0mFWYNpiiSBGqeh9wPXAbbtTHStxQ4tdiiGMJcDzObr0cV3M8GzhNVT8M8DoS
  13549. mIwbrbIV19E5ENfaQFVfwJmPrsMVqgtxHbXHqerGgHiOxf2xA49fAq+r6nxfmyxT1TLgAeAMXwBE
  13550. wxYRKQ84oq3xPQC8AUwRke24ju2aWf4TcSaWVT5Ps4LC/hNvwhCRmud+LXAmrrPzfGp5H6o6G7gC
  13551. eBBXMJbgOv7D8TjuuZ2L6/TdhXv2iXI7Lq/LgCm4/owaGfcCP/NybcKNOPp3AnmIxFHAJyJSjnsv
  13552. 16pfqgfXR/S0f96jcIML8nDmzVnA20FxPYDrb9osIhN8P8apwC9ww3rL2DewIBzFwOe+NdUHN3Is
  13553. mAtx7+Fh4AR//nhMuW7kxD2PwjAMw2gaWIvCMAzDiIgpCsMwDCMipigMwzCMiJiiMAzDMCKS9suM
  13554. B1JYWKg9evSo93R37NhBfn5+vadbGyZX7KSrbCZXbJhcsTFnzpwNqto+7ggSWf+jvo/Gtsx4ophc
  13555. sZOusplcsWFyxQYJrvXUoFoUhhFMFdV8zFI2sYND6MBBFJJFMuavGYZRgykKo8GyiR38m7msZgs5
  13556. ZDKXUpqRxQC6cQp9kMDNmw3DiBtTFEaDZCFreJ0vyUQYyQAOoYhlbOALVvIxS2lJLkfTM9ViGkaj
  13557. wBSF0eDYwk5e50sOoAUjGUAr8gDoxQEcRHteYDbvsogutKEzwQvuGoYRKzY81mhwvMNCAM7myO+V
  13558. RA2CMILDaUEuL/M5u6hIhYiG0agwRWE0KL5hLYtZy4n0pvV+q4HvI48czuZItrObN/myniU0jMZH
  13559. VIpCRIaJyGIRKRGRW0K4i4hM8O7zRGRAgNtyEZkvInNFZHbA/bYi8q6ILPG/bZKTJaOxUkEVb7OA
  13560. QgoYXEv/QxfaMISD+Zq1fMemepLQMBontSoKv1b+Q8BwoC9wroj0DfI2HOjtj9G45XoDGaqqR6jq
  13561. wIB7twBTVbU3bnOcHyggwwhkJiVsYRencxiZUdRxBtGD5uTwId/Wg3SG0XiJpkUxCChR1aXq1rWf
  13562. hNs1LJARwEQ/t2MWbjvDSNtv1oR52p8/TeK7vRmNmN1UMItlHEpHetAuqjA5ZDGIHixhHWVsq2MJ
  13563. DaPxUut+FCIyEhimqpf76wtxWxdeE+DnLeBu9Rupi8hU4GZVnS0iy3Cb5VThNnB/zPvZon4PaL+p
  13564. yGb94Z7QiMhoXCuFoqKi4kmTJiWa55gpLy+noCDcFsGpoynJVdqlgqW99nLk7FxalEc/oa4iS/l0
  13565. 8E7abszkR4tym9QzSwYmV2ykq1xDhw6dE2TRiYn6GB57vKquEpEDgHdF5GtVnRHoQVVVREJqLK9Y
  13566. HgMYOHCgDhkypM4FDmb69OmkIt3aaCpyVaM8yDS60oYzBx4bc3hhER8XLaV/0VHMm/5Zk3hmycLk
  13567. io10lStRojE9rWL/Tdu7+HtR+VG3yT2qug54lX179a6tMU/533WxCm80Db5hLVvYFfcEusH0JIMM
  13568. PrK+CsNsUoD4AAAgAElEQVSIi2gUxWdAbxHpKSI5uP1q3wjy8wZwkR/9NBjYqqpr/CbtLQBEJB+3
  13569. 3+1XAWEu9ucXA68nmBejkfIpy2lJLn0oiit8AbkcSRe+ZBV7s23rX8OIlVpNT6paKSLXAO8AmcAT
  13570. qrpARMZ490eAycDpuE3ZdwKX+uBFwKuuC4Is4DlVrdlA/W7gRRH5JW5T+FFJy5XRaFjLNpazkZPp
  13571. Q0YC034G0oPZfMe6osokSmcYTYOo+ihUdTJOGQTeeyTgXIGrQ4RbChweJs6NwMmxCGs0PT5lOVlk
  13572. MGA/y2bsHEALOtOaso5bUdQWDDSMGLCZ2UbaspsK5rOKfnQmj5yE4xtAV3bmK6VsSYJ0htF0MEVh
  13573. pC0LWUMl1RyZYGuihr50IqMKvuC7pMRnGE0FUxRG2vIlpRSSn7QVYJuRxQHrsljAGvZgfRWGES2m
  13574. KIy0ZCM7WMlmDqdrUvsTOqzJooIqFrA6aXEaRmPHFIWRlnxJKQL0p3NS422xLYP2FPAFK5Mar2E0
  13575. ZkxRGGlHNco8SjmI9rQgN6lxC8IRdGUVW1jP9qTGbRiNFVMURtqxnI1sYzeH06VO4u9HZwThyx8s
  13576. MGAYRihMURhpx1xWkks2h8Q5E7s2CmhGL9ozn1VUYzO1DaM2TFEYacVuKviaMg6jI1lEv0psrBxO
  13577. F7azm2VsqLM0DKOxYIrCSCtq5k4cnqS5E+E4mAPIJYt5lNZpOobRGDBFYaQVbu5EAZ1oVafpZJHJ
  13578. oXRiEWU2p8IwasEUhZE27Js70aVe1mLqTxcqqWYRa+o8LcNoyJiiMNKGeXU0dyIcXWhNW/L50sxP
  13579. hhERUxRGWqAo81jFgXUwdyIcgtCfzqxgE5vZWS9pGkZDxBSFkRYsZyNb2cURdTR3Ihw1czXm2kxt
  13580. wwiLKQojLfiSUpqRVWdzJ8LRijwOoj1zKaWa6npN2zAaClEpChEZJiKLRaRERG4J4S4iMsG7zxOR
  13581. Af5+VxGZJiILRWSBiFwbEGa8iKwSkbn+OD152TIaEnuoYBFlHEanOp07EY4BdGU7uylhfb2nbRgN
  13582. gVoVhYhkAg8Bw4G+wLki0jfI23Cgtz9GAw/7+5XADaraFxgMXB0U9m+qeoQ/9ttBz2g6zGMVFVQl
  13583. bd+JWDmYIvLJsYUCDSMM0bQoBgElqrpUVfcCk4ARQX5GABPVMQtoLSIdVXWNqn4OoKrbgUVQT0Na
  13584. jAaBosxmBZ1oRack7TsRK5lkcDhd+IZ1bGd3SmQwjHRG3HbXETyIjASGqerl/vpC4GhVvSbAz1vA
  13585. 3ao6019PBW5W1dkBfnoAM4DDVHWbiIwHLgW2ArNxLY/NIdIfjWulUFRUVDxp0qS4Mxsv5eXlFBQU
  13586. 1Hu6tdEY5NrSqop5R+7m4K9z6FCWXceShZdtV141nx29ix5Ls+n2XeLbriZLrlRjcsVGuso1dOjQ
  13587. Oao6MO4IVDXiAYwE/hFwfSHwYJCft4DjA66nAgMDrguAOcDPAu4VAZm4Vs2dwBO1yVJcXKypYNq0
  13588. aSlJtzYag1wv6+d6j76te7Wy7gQKIJJsT+lHOkH/o9VaXS+yBNIY3mV9YnLFBjBbaylfIx3RmJ5W
  13589. wX7G4y7+XlR+RCQbeAX4l6r+O0BBrVXVKlWtBh7HmbiMJkQ5e1jEGg6nK9kp6MQOZgDd2MxOltpC
  13590. gYaxH9Eois+A3iLSU0RygF8AbwT5eQO4yI9+GgxsVdU1IiLAP4FFqvrXwAAi0jHg8izgq7hzYTRI
  13591. 5rKSapRiuqVaFAB+RAcKaMbHLE21KIaRVmTV5kFVK0XkGuAdnKnoCVVdICJjvPsjwGTgdKAE2Inr
  13592. ewA4Dmeqmi8ic/2936sb4XSviBwBKLAcuDJpuTLSnmqUOXxHD9pRSHrYdLPIZBA9+A+LKWMrHep4
  13593. YULDaCjUqigAfME+OejeIwHnClwdItxMCL26m6peGJOkRqNiIWvYyi5O5UepFmU/iunOB5TwMUs5
  13594. iyNTLY5hpAU2M9uodxTlA5bQngL60CHV4uxHHtkMoBtfeUVmGIYpCiMFLKKM9ZRzAr3rZTnxWDma
  13595. HgDMYllqBTGMNMEUhVGvKMoMltCOfPrSsfYAKaA1zTmMjnzBd+ymItXiGEbKMUVh1CuLWcs6tnMC
  13596. vchIw9ZEDcdwEHup4kO+TbUohpFyTFEY9UZNa6It+RxGp1SLE5EOtKQ/nZnFMturwmjymKIw6o35
  13597. rKKMbb41kf6f3sn0IQPhXRamWhTDSCnp/281GgU72MM7LKQLrenXQNaFbEEuJ9CLr1lrs7WNJo0p
  13598. CqNeeIeF7KGSM+mf1n0TwQymJ63JYwoLbWMjo8liisKoc75hLV+xmhPoRXtapFqcmMgik1Ppyzq2
  13599. 85Et7WE0UUxRGHXKHiqYzFe0p4DjOCjV4sTFIRRxKB2ZxmIzQRlNElMURp1RRTUv8Tnb2cMZ9E/J
  13600. NqfJQBDOpD+FFPAKn7PFRkEZTQxTFEadoChv8CVL2cCZ9KMrbVItUkLkkMUoBlKN8hJzqKAq1SIZ
  13601. Rr1hisKoE97ja+azmqEcwhEp2gs72bQjn59yBGvYxgvMZo/N2jaaCKYojKRSSRUlvffwMUs5iu4c
  13602. 30D7JcJxCEWcSX+WsZGn+JhttnCg0QQwRWEkjU3s4Ak+YnXnSgbTk9M4NC0X/UuUI+nKeRzFZnbx
  13603. Tz5kJZtSLZJh1CmmKIyE2U0FH/ItjzGTLezi0PnNOJW+DWq+RKwcRHsu5RgE4Uk+5hU+t6U+jEZL
  13604. VIpCRIaJyGIRKRGRW0K4i4hM8O7zRGRAbWFFpK2IvCsiS/xvw+7tbGIoyjq28x6LeID/MJWv6Uob
  13605. ruQE2m2Maj+sBk8RLfkVJ3EivVnMWv7O+7zBl5SwjiqbnGc0Imr9R4tIJvAQ8F9AKfCZiLyhqoEL
  13606. 4AwHevvjaOBh4Ohawt4CTFXVu70CuQW4OXlZM5JFNcp2drORHWyknNVsZSnr2c4eBOhLJ47lQDo2
  13607. wa1Dc8hiCAczgG7MYAlfsZq5lJJLNj1pRwdaUkRLCimgBblkN9AhwkbTJpqq3yCgRFWXAojIJGAE
  13608. 7LdS2ghgot8SdZaItBaRjkCPCGFHAEN8+KeB6dSRopjPKlawMe7wqw/eQznzkihRcqhNLg15T793
  13609. U39VjVJNNdUolVRTQRWVVLGHSnayl11Bo3tyyeZACjmQQnrRnpbkJS9TDZSW5HIG/RhGX75lA4tY
  13610. w0o2s4iy/fw1I4vm5NCMLLLJJIcsMhE2HbqbjXyBABnI9307Nca7wL6e+jToNdRvP1XUpVyD6MkB
  13611. KVrZIBpF0RlYGXBdims11Oancy1hi1R1jT8vA4pCJS4io4HRAEVFRUyfPj0KkfdnWc+9rO1QGXO4
  13612. GrRtNZv2lMYdvq6IWy71hY3/Fa05hIxq3FElZFVB6wqhfUU2OXuF5jszyNsp5OwVhG1sYxufh1jW
  13613. ory8PK73VB/Ul2ytgdYIlZnN2VFQza7cavY2U/bmKBXZe9ibuYddmUp1JqhAZbMqduxcg4pX8F4b
  13614. BJ6ngkb37dcxdSlX5aL1tN6SohapqkY8gJHAPwKuLwQeDPLzFnB8wPVUYGCksMCWoDg21yZLcXGx
  13615. poJp06alJN3aaIpylZWV6QknnKAFBQV6/fXXxxy+IT2zcePG6fnnnx82TN++fcPmZ9q0adq5c+ew
  13616. YS+++GIdO3ZsXHKlAyZXbACztZbyNdIRTWf2KthvxlQXfy8aP5HCrvXmKfzvuihkaVQ899xzDBw4
  13617. kIKCAjp27Mjw4cOZOXMmAOPHj+eCCy74QRgRoaSk5PvrhQsX8pOf/IRWrVrRokULhg4dykcffbRf
  13618. mL179zJ+/Hh69+5Nfn4+PXr04LLLLmP58uXf+3nrrbcYNGgQ+fn5tGvXjvPPP5/S0n01o6eeeorj
  13619. jz8+Yn4uueQSsrKy2Lhxn5lvzJgxFBQUUFBQQE5ODtnZ2d9fDx8+nOXLlyMi39+rOV544YWQaTz2
  13620. 2GMUFhaybds27rvvvojy1MYll1zCbbfdllAcsfKHP/yBfv36kZWVxfjx4xOKa8GCBQwZMiQpctUH
  13621. wd9ubQwZMoR//OMfSUl71KhRTJkyhT179tChQ4f93G688UZ69+5NixYt6NOnDxMnTkxKmo0Jccom
  13622. ggeRLOAb4GRcIf8ZcJ6qLgjw82PgGuB0nGlpgqoOihRWRP4MbNR9ndltVfWmWmRZD6yIL6sJUQhJ
  13623. Xw2uCOiAy882nJWhJdACZ6LrBDQDlgWFKwa+Avb48B2A9TjznXpZO+Oe+w4fpheQ7dPaCWQCbb3/
  13624. DUAbXH/SCmCzd+/iZVkIVAHtfNyLw+QnAzjcx7kNQi61GipPOUA/YE6YeIPpDlQAq6P0H0zgu+wB
  13625. 7E0grnhoh5O/PbArIO1Q31i4byAaWgA9IazBvAfR5T2Z337gtxsNhwAbw6Qfq1yHAYtwz7ML7v9R
  13626. QydgE7AbyMcNylnCvv9PLNRFWZEMDlHV+Ds4oml24BTAN8C3wFh/bwwwxp8LbnTTt8B8YGCksP5+
  13627. O5yJagnwHk5RxN00qsuDBJttIeJrBZQD50TwMx54NsR9BXr5843A5BB+HgZm+PNTcAVS1zDpCE5B
  13628. 3BR0PwP3p/6jv74EmBlB3otw/VHXAruizROuwFIgK4rn9hSukN3rn98pXs5b/Pe1EXgx8FsCXsIp
  13629. 0a3ADOArf390UFxvBj/fgDTv8OdDcEr8Zh/nM/7+GcBcYAvwEdA/irw8C4yP9I355/UiMBHYDiwI
  13630. +m8tB07x53le1s045f47oDTA75HA5z6eF4BJNfmKlAdgtk/nRpzS2erD54bJVy/gfe9vA/CCvz/D
  13631. P9sd/nn/HFdBeQtX0dnsz7t4/3fiKii7vf8ak3Uf4F2gEldpGRXFs24DLPXnVwH31uL/DeCGOP/b
  13632. SS0rknUkKlfKM9AQjmS/fGCY/9DDFo5EpygqgEtD+Bnq/2R5wN3A+xHS6ePj7BnC7XbgY39+CZEV
  13633. xVTgXlxLSYHiaPJEDIrC+38qqIC7FpiFqyU2Ax4Fng9wvwxXu24G3A/sDBdX8PMN9oNTFJXAPT6+
  13634. PFwBvA7Xks4ELsYVrM1qyUe0imI3rrKVCfwJmBXgvpx9iuJu4ANcS7ErTsmXerccXGXgOlzLcqT/
  13635. dmryFTYP7FMUn+Jq3m1xNfMxYfL1PDAWp8Bz2b/vMvjZtgPOBpr7d/QS8FqA+3Tg8oDrfFxl5FIv
  13636. 15E4ZdQ3jCwn4xRfOa5CsMX/7vDnJ4UIkwesAYbF+d9ulIrCZmanhnbABlWtbSjWKBHZEngEuWfh
  13637. Pupg1uD+qG19WqH81FAYECZUPIUh7u+HiHTDKafnVHUtzvR0UW3hgtgQlNcfRRluDK6lWqqqe3CF
  13638. 60hv9kRVn1DV7QFueSKSyISPamCcqu5R1V24lsmjqvqJqlap6tM408rgBNIIZKaqTlbVKuAZnHkv
  13639. FKOAO1V1k6quBCYEuA3GKYj7VbVCVV/GmYFriCYPE1R1tapuAt4EjggjRwXOPNhJVXer6sxwGVPV
  13640. jar6iqruVNXtuFbESeH841o9y1X1SR/+C+AV4Jww8U9V1dbAa95PZ5zSK1TV1qr6fohgjwBfAu9E
  13641. kKPJYYoiOh5LcnwbgcKawiwCL/oP+vsjyH0b0DFEuI64Am2zTyuUnxpq7Knh4onG3nohsEhV5/rr
  13642. V4DzRCQ7irA1FAbldVGU4boDrwYo0kW41lSRiGSKyN0i8q2IbMMVEhCF8ovAelXdHZT+DUHKvCuu
  13643. 9h0L4b6xwIkYO4HcMN9NJ/Yfir4iyG2V+qplCPdIeaiRK1iOgjDy3oQzZ34qIgtE5LIw/hCR5iLy
  13644. qIis8O9nBtDaT9QNRXfcRN4tQF//ez6uny5U/KXez7m4uVrrfBxrROSvIfz/GdeXMSroWcVCssuK
  13645. ZJGQXKYookBVk/3yP8bV2H6aYDxvEro2NQpnMtqJ6/8ZJCJdwsSxGGd33y8eEcnAmQWmRiHHRcCB
  13646. IlImImXAT3CF8elR5SIxVgLDg5RMrqquAs7DTew8Bdcv1MOHqZmZEKow2IkzhdQQXAgFh1mJq8kH
  13647. pt9cVZ+PJRNJ+MbWsP8Iw25Bbp1FRMK4h81DrHKpapmqXqGqnYArgb+LSK8w3m/AdVgfraotgRP9
  13648. /XDvZyXOjFojX2tVLVDVq8LI0gVn5n3PV7IeA6724a4P9Csit+NWmDhVVbfFkuegNNNSUSQqlymK
  13649. FKCqW4H/Bh4SkZ/6mlW2iAwXkXtjiOp24FgRudOvndVCRH6NK7hv9mm9h+v8e1VEikUky/sbIyKX
  13650. +ZrTjcBtInKeiOSKSAfgH7hRWH8LSE+8e+BxDHAQbgb/Ef44DHiO2M1P8fAIcKeIdPcCtheREd6t
  13651. BU4hb8QV/ncFhV0LHBh0by6uNZQpIsOIbAoBeBwYIyJH+zXP8kXkxyIScoSJf8+5uP9eln+GyZhF
  13652. 9SJwq4i08ZWCXwe4fYzrW/mNT/9nuPcVVx4iISLnBFRKNoOf/O8Ift4tcAMttohIW2BcUHTB/t8C
  13653. DhaRC30+skXkqFrMlMW4TnyAAbi+jWCZb8VVKk5R1fiXcGjEmKJIEap6H3A9cBtu1MdK3BDj12KI
  13654. YwlwPM5uvRxXczwbOE1VPwzwOhKYjButshXX0TkQ19pAVV/AmY+uwxWqC3GdescF/XGOxf2xA49f
  13655. Aq+r6nxfmyxT1TLgAeAMXwBEwxYRKQ84rq89CPh03gCmiMh2XMd2zez/iTgTyyqfp1lBYf+JN2GI
  13656. SM1zvxY4E9fZeT61vA9VnQ1cATyIKxhLcB3/4Xgc99zOxXX67sI9+0S5HZfXZcAUXH9GjYx7gZ95
  13657. uTbhRhz9O4E8ROIo4BMRKce9l2vVL+GD6yN62j/vUbjBBXk48+Ys4O2guB7A9TdtFpEJvh/jVOAX
  13658. uGG9ZewbWBCOYuBz35rqgxs5FsxduBZWScD39/tYM96YqXUehWEYhtG0sRaFYRiGERFTFIZhGEZE
  13659. TFEYhmEYETFFYRiGYUSkQe1ZWVhYqD169Kj3dHfs2EF+fn69p1sbJlfspKtsJldsmFyxMWfOnA2q
  13660. 2j7uCBJZ/6O+D9uPYn9MrthJV9lMrtgwuWIDW+vJMGph3jz46U+hbVv6/+53cNddMCfaVc0NwzBF
  13661. YTReSkvhF7+Aww+HadPgxz8mZ+NGGDsWBg6ECRNqj8MwDFMURiNl61Y49VR48034/e9h2TJ45hlm
  13662. P/EErF8PP/sZXHstJLhLnmE0BRpUZ7ZhREVVFZx3HixZAlOmwNCh+7sXFsKkSXD++XDjjVBRAbfc
  13663. khpZDaMBYIrCaHzceitMngx///sPlUQN2dnw3HPu99ZboU8f149hGMYPMNOT0bh4/nn485/hqqvc
  13664. EYmsLHjqKejfH665BrZvrxcRDaOhYYrCaDxs2wa//S0MHgwPPBBdmOxsePRRWL0abrutbuUzjAaK
  13665. KQqj8fCnP8G6dW40U3YMm+sNHuxaH//zP/DZZ7X7N4wmhikKo3GwfDn87W9wwQVw1FGxh7/rLujQ
  13666. Aa68Eipr28rcMJoWCSkKERkmIotFpEREfjBsxO+WNcG7zxORAUHumSLyhYi8lYgchsGtt0JGhivw
  13667. 46FVK2eu+uILmDgxubIZRgMnbkXht298CLfPbF/gXBHpG+RtONDbH6OBh4PcrwUWxSuDYQDw8cdu
  13668. uOuNN0LXrrX7D8fIkVBc7JSNtSoM43sSaVEMAkpUdam6rRYn4TayD2QEMNEvNzILaC0iHQH8vro/
  13669. xu3NbBjx8/vfO7PRTTclFo8I/Pd/w7ffutFThmEAic2j6Izb57mGUvbtVRzJT2fc3s73AzfhNlgP
  13670. i4iMxrVGKCoqYvr06QmIHB/l5eUpSbc2TC5osXAhxdOnU3LVVZTOnl2r/1pla9GCgQcdRMbYsXza
  13671. qRNkZiZP2ETkShEmV2ykq1wJE+9qgsBI4B8B1xcCDwb5eQs4PuB6KjAQOAP4u783BHgrmjRt9dj9
  13672. MblU9ayzVNu0Ud22LSrvUcn28suqoPrcc4nJFgP2LmPD5IoNUrh67Cog0CDcxd+Lxs9xwE9EZDnO
  13673. ZPV/ROTZBGQxmiJffw2vvQZXXw0tIjZMY+Oss+DQQ+GOO6C6OnnxGkYDJRFF8RnQW0R6ikgO8Avg
  13674. jSA/bwAX+dFPg4GtqrpGVW9V1S6q2sOH+4+qXpCALEZT5M9/htxc+M1vkhtvRgb84Q+wcKFTRIbR
  13675. xIlbUahqJXAN8A5u5NKLqrpARMaIyBjvbTKwFCgBHgd+laC8huEoLYVnnoFf/hLax79xV1hGjoSe
  13676. PeGvf01+3IbRwEhoUUBVnYxTBoH3Hgk4V+DqWuKYDkxPRA6jCXL//c4sdMMNdRN/ZqZrqVx3nZut
  13677. Hc8kPsNoJNjMbKPhsX07PP44jBoFdbmH+mWXub6Pv/2t7tIwjAaAKQqj4fHUU/sWAKxLWraEyy+H
  13678. l15ypi7DaKKYojAaFtXVbtG/Y46BQYPqPr3f/Mal+eCDdZ+WYaQppiiMhsXkyVBS4rYxrQ969HDD
  13679. ZR97DHbsqJ80DSPNMEVhNCweeAA6d3Z7XtcX110HmzfbYoFGk8UUhdFwWLAA3nvP7UYXy34TiXLs
  13680. sTBwoDN52QQ8owliisJoODzwAOTlwRVX1G+6Is7U9fXXMGVK/aZtGGmAKQqjYbBhg5tgd8EF0K5d
  13681. /ac/apRboTbaLVYNoxFhisJoGDz6KOzeXfdDYsORkwO/+hW8/bZrWRhGE8IUhZH+7Nnjhqeedhr0
  13682. Dd4bqx658kpo1sz1VRhGE8IUhZH+vPAClJW50Uep5IAD4Lzz4Omn3Sgow2gimKIw0htVt4RG375w
  13683. 6qmplsZ1au/c6eZVGEYTwRSFkd68/z7Mnev6JkRSLQ0cfjicfLLr1N6zJ9XSGEa9YIrCSG/+9jco
  13684. LHSjndKFm2+GNWvgWdtry2gaJKQoRGSYiCwWkRIRuSWEu4jIBO8+T0QG+PtdRWSaiCwUkQUiUk/r
  13685. MRgNigUL4I033GijvLxUS7OPU06BI490GyfZBDyjCRC3ohCRTOAhYDjQFzhXRIKHpAwHevtjNPCw
  13686. v18J3KCqfYHBwNUhwhpNnbvugvz85O9glygirlWxeDG8/nqqpTGMOieRFsUgoERVl6rqXtze1yOC
  13687. /IwAJvr9vWcBrUWko98O9XMAVd2O2yGvcwKyGI2NkhKYNAmuuio1E+xq4+yz4cAD4Z57XIe7YTRi
  13688. ElEUnYGVAdel/LCwr9WPiPQAjgQ+SUAWo7Fx991uPae62sEuUbKy4MYb4ZNPYMaMVEtjGHVKQluh
  13689. JoqIFACvAL9V1W1h/IzGma0oKipi+vTp9Segp7y8PCXp1kZjlavZ2rUc/dRTrDnzTJZ8/XVSZ0In
  13690. 85llHHggg9u0Ycd11/HlffclNCqrsb7LusLkqmdUNa4DOAZ4J+D6VuDWID+PAucGXC8GOvrzbOAd
  13691. 4Ppo0ywuLtZUMG3atJSkWxuNVq5rrlHNylJdsSIp8gSS9Gf2wAOqoDplSkLRNNp3WUeYXLEBzNY4
  13692. y3pVTcj09BnQW0R6ikgO8AvgjSA/bwAX+dFPg4GtqrpGRAT4J7BIVf+agAxGY2PFCrcf9kUXQbdu
  13693. qZamdq68Erp3h9//3voqjEZL3IpCVSuBa3CtgkXAi6q6QETGiMgY720ysBQoAR4HfuXvHwdcCPwf
  13694. EZnrj9PjlcVoRPz+986EM25cqiWJjmbN4PbbYfZs+Pe/Uy2NYdQJCfVRqOpknDIIvPdIwLkCV4cI
  13695. NxNIg2m2RlrxySfw3HMwdmzDaE3UcMEFcO+9Tu4RI1xHt2E0ImxmtpEeqML110NRkZuj0JDIzIQ7
  13696. 73TzKp5+OtXSGEbSMUVhpAcvvwwffQR33AEtWqRamtgZMcJtmXrLLW6TJcNoRJiiMFLPzp2uFdGv
  13697. H1x6aaqliQ8ReOQR2LIlfed+GEacmKIwUs/NN8OyZW5F1szMVEsTP/36uRbFxIm2t7bRqDBFYaSW
  13698. KVPc7nW//S0MHZpqaRJn7Fg45BA3bHbHjlRLYxhJwRSFkTo2bXKmph/9yC0A2BjIzXXzQJYvh1tv
  13699. TbU0hpEUTFEYqUEVrr4a1q1z+zqk0zLiiXLCCW7F2//5H3jmmVRLYxgJY4rCSA1/+YtbHXb8eBgw
  13700. INXSJJ+//AWGDIErroBPP021NIaREKYojPrnmWfgppvg5z9vvOaZ7Gx46SXo2BHOOsvtiGcYDRRT
  13701. FEb98vbbcNllbt/pp5+GjEb8CRYWuo2Ntm6F00+HtWtTLZFhxEUj/pcaacf//q/b8KdfP7cuUrNm
  13702. qZao7unfH155xc3aPv54WLo01RIZRsyYojDqHlU3qunMM93Q0cmToWXLVEtVf5x2GkydChs3wnHH
  13703. wdy5qZbIMGLCFIVRt2ze7Poixo6Fc8+FmTOhQ4dUS1X/HHOMy3tWlju/5x6orEy1VIYRFaYojLqh
  13704. ogImTIBevZzp5c9/dsNgmzdPtWSpo29fNwJq2DA3g3vQIJgzJ9VSGUatmKIwksumTXR67TU47DC4
  13705. 9lo39PWLL9z+0glsFdpo6NjR9c+8/DKsXg0DB8Ipp9Duo4+gujrV0hlGSBJSFCIyTEQWi0iJiNwS
  13706. wl1EZIJ3nyciA6INazQQVGHJEnjySTjnHOjYkYMfeMC1HN56yy3R0b9/qqVML0Rcp/7XX8Of/gSL
  13707. F9Nv7Fjo2RN+9Ss3Umr79lRLaRjfE/cOKyKSCTwE/BdQCnwmIm+o6sIAb8OB3v44GngYODrKsEaq
  13708. 2bsXysvdmkVbtsD69e4oLYWSEnfMm+dmVwMccABcdRWzDzuMgZdfnlrZGwKtWzsT1A03sOCOOzj0
  13709. iy/cgoIPP+yUyYEHwqGHOpNVly7QqZPr32ndGlq1csux5+XZRklGnZPIFzYIKFHVpQAiMgkYAQQW
  13710. 9iOAiX6nu1ki0lpEOgI9ogibPMaPh3/9K+7gg3btSsslJr6XK9xezYH3a85V9z+qq6Gqat9RWekU
  13711. xN69kU0hbdpA797O3n7ccW7ZikMOgYwMyqdPT1oemwTZ2awfOtRtqbp3r9uXY8YM+Oord0yeHLnj
  13712. OxGLjfsAAAZzSURBVDPTrTGVne2URmamOzIy3FFj8hMJfR6Bo3ftSst+pbT/T9YF//wnnHhi3cRd
  13713. C4kois7AyoDrUlyroTY/naMMC4CIjAZGAxQVFTE9jkKow65dtOnePeZwNVRWVrI9DWtt+8kV5k+v
  13714. oe77QkJrfjMyUF+wVGdloVlZVGdnU52TQ1VuLlV5eVTl51PRujV7W7Vib7t2VAYPb1279vsJZeXl
  13715. 5XG9p/ogXWX7gVwnnrivUKiqInvrVppt3EjOpk1k7dhBZnk5WTt3krF3LxkVFWTs3YtUVSGVlUhV
  13716. Fagi1dVIjbKvqRh4JFzlIojKigqy0v3bTyPqUq7vvvmGHSnqx0q/Jx2Eqj4GPAYwcOBAHTJkSOyR
  13717. xBMmgOnTpxNXunWMyRU76SqbyRUbTVGuojqJNToSURSrgK4B1138vWj8ZEcR1jAMw0gDRKNsgv4g
  13718. oEgW8A1wMq6Q/ww4T1UXBPj5MXANcDrOtDRBVQdFEzZMmuuBFXEJnBiFQDpuhGxyxU66ymZyxYbJ
  13719. FRuHqGrcm9HH3aJQ1UoRuQZ4B8gEnlDVBSIyxrs/Avz/9s4t1IoqjOO/P5qmFqmZXVDwFBn4lFJh
  13720. V0qjq3h6FBK0y0tEdKPQhKC3tKjektAisgwxMxEDu1FPaWIdO6amoZWmHSO6kKAG/x7WOrU5uKdz
  13721. zs69pvp+MOw1a/awf8zMmm/PmjXfbCAFiT3AEeCOqnX78ZtnDda3FSRtsX1Jid+uIrwGTl3dwmtg
  13722. hNfAkLSllfVbukdhewMpGDTWLW0oG7i3v+sGQRAE9SOezA6CIAgqiUDRP14oLdCE8Bo4dXULr4ER
  13723. XgOjJa9B38wOgiAI/h/EFUUQBEFQSQSKIAiCoJIIFH9DXbLcSpoo6QNJX0jaLun+XD9W0juSdufP
  13724. MYX8hkj6VNL6unjl3GKrJe2UtEPS5TXxejDvw25JKyWdWsJL0ouSeiR1N9Q19ZC0MLeDXZJubLPX
  13725. U3k/bpP0pqTRdfBqWPawJEsaVxcvSfflbbZd0pKWvGzH1GQiPePxFXA+MAzoAqYUcjkXmJbLp5Me
  13726. WJwCLAEW5PoFwOJCfg8BrwHr83xxL+Bl4O5cHgaMLu1FynO2FxiR51cB80t4AdcA04DuhroTeuRj
  13727. rQsYDnTkdjGkjV43AENzeXFdvHL9RNIzYV8D4+rgBVwHvAsMz/PjW/GKK4pq/syQa/sY0Jvltu3Y
  13728. Pmh7ay7/CuwgnXQ6SSdE8udt7XaTNAG4FVjWUF3US9IZpAa0HMD2Mds/lfbKDAVG5AwFI4HvSnjZ
  13729. /gj4sU91M49O4HXbR23vJT1Ee1m7vGxvtN2bQvdjUtqf4l6ZZ4FHgcaRQaW97gGetH00f6enFa8I
  13730. FNU0y35bFEmTgKnAJuBs2wfzokOUyR32HKmhNKa2LO3VARwGXspdYsskjSrtZfsA8DTwDXAQ+Nn2
  13731. xtJeDTTzqFNbuBN4O5eLeknqBA7Y7uqzqPT2mgxcLWmTpA8lXdqKVwSKfxmSTgPeAB6w/UvjMqdr
  13732. y7aOd5Y0C+ix3fTlzyW8SP/apwHP254K/EbqSinqlfv8O0mB7DxglKS5pb1ORF08GpG0CPgdGPwL
  13733. Zv45l5HAY8DjpV1OwFBgLDAdeARYJQ3+XcQRKKrpT4bctiHpFFKQeNX2mlz9fX4ZFPmzp9n6J4kr
  13734. gdmS9pG65mZIWlEDr/3Aftub8vxqUuAo7XU9sNf2YdvHgTXAFTXw6qWZR/G2IGk+MAu4PQex0l4X
  13735. kAJ+Vz7+JwBbJZ1T2AvS8b/Gic2kq/1xg/WKQFHNJ8CFkjokDQPmAOtKiOR/A8uBHbafaVi0DpiX
  13736. y/OAt9rpZXuh7Qm2J5G2z/u259bA6xDwraSLctVM0hsUi3qRupymSxqZ9+lM0v2m0l69NPNYB8yR
  13737. NFxSB+n1xpvbJSXpJlL35mzbR/r4FvGy/bnt8bYn5eN/P2nAyaGSXpm1pBvaSJpMGszxw6C9TsZd
  13738. +P/SRMp++yVpdMCigh5XkboBtgGf5ekW4EzgPWA3aZTD2IKO1/LXqKfiXsDFwJa8zdYCY2ri9QSw
  13739. E+gGXiGNQGm7F7CSdJ/kOOkkd1eVB7Aot4NdwM1t9tpD6lvvPfaX1sGrz/J95FFPpb1IgWFFPsa2
  13740. AjNa8YoUHkEQBEEl0fUUBEEQVBKBIgiCIKgkAkUQBEFQSQSKIAiCoJIIFEEQBEElESiCIAiCSiJQ
  13741. BEEQBJX8AceBcacrcAwzAAAAAElFTkSuQmCC
  13742. "
  13743. >
  13744. </div>
  13745. </div>
  13746. <div class="output_area"><div class="prompt"></div>
  13747. <div class="output_png output_subarea ">
  13748. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX4AAAEICAYAAABYoZ8gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
  13749. AAALEgAACxIB0t1+/AAAIABJREFUeJzsnXd4VVW6h98vjZCEDoZOQFDEbmgiCozIgA0LYEFEvcrg
  13750. jOWOOo6O3rFc2zjjjHp1xDKOXbCLiJUBFQUEFEV6lwCht1ACSb77x1qBw/Gc5CQ5Jyfle/PsJ3vv
  13751. VfZv7bP3t+peS1QVwzAMo/aQEG8BhmEYRuViht8wDKOWYYbfMAyjlmGG3zAMo5Zhht8wDKOWYYbf
  13752. MAyjlmGG36iSiEimiHwpIjtF5JF464klInK3iLxSgvs8Eekbxq2viOSUEPYFEbkvCjKNGoQZ/kpA
  13753. RC4VkVkikici60TkIxHp7d1CvvQioiLSMeC4i4iMF5Ht3hhOFpFeQWFSfHxLRGSXiKwUkedFJCvA
  13754. z9ki8q133ywir4pI6wD3K0RkainpeUFECkSkRcC5MT59eSKyT0T2Bxx/JCJZPk15QdtFYS4zCtgE
  13755. 1FfVm0u8waVQ2cZPRA4TkddFZK3/vb4WkR7ljU9Vj1bVKVGUGFOCn90I/E8RkaujdO03RGSAiNQR
  13756. kdwgtzr+fdghIrkiclM0rlkdMcMfY/zD9SjwAJAJtAWeBM4tQxyHA18Dc4H2QEvgXeBTETk5wOtb
  13757. Pt5LgQbA8cAs4HQfzxDgNa+nKXA0kA9MFZFGEWpJBy4EtgOXFZ9X1dGqmqGqGT6t44qPVXVQQBQN
  13758. A85nqOq4MJdqB8zXKvCFoYgklTFIBjATyAYaAy8CH4pIRrS1Gb8gG/fMHwf8FOR2N9AJ92z1A24V
  13759. kYGVqq6qoKq2xWjDGd88YGgJfu4GXglxXoGOfv9lYGIIP08BX/r9/sAeoE2Y6wiwCrg16HwC7gW5
  13760. 1x9fAUwtQe/lwGrgRuCnSNMEZPk0JUVw314A9gP7/P3r73XeBiwDNgNvAI0DwrwJ5OIypC+Bo/35
  13761. UUFxfRB8fwOueZ/f7wvkAH/0cb7sz58NzAG2Ad8Ax5XhWdgBZJdwv94AXgJ2AvOArgHuK4H+fr+u
  13762. 17oVmA/8AcgJ8Hsi8J2PZxwwtjhdpaXBX+cW4Ed/H8cBqWE0dwS+8P424TJ6/L1XYJe/3xcBjYAJ
  13763. wEavewLQ2vu/HygE9nr/T/jznYHPgC3AImBYBPe4EbDc718LPBzkvhYYEHB8LzC2Mm1CVdniLqAm
  13764. b8BAoIASjB2RGf5c4MoQfvr5l6Yu8BDwRQnX6ezjbB/C7R5gmt+/gpIN/yTgYVztpSCUMQuVJspg
  13765. +L3/F4IM1o3AdKA1UAd4Gng9wP0qoJ53exSYEy6u4Psb7Adn+AuAv/j46uIM6gagB5AIjMQZyjoR
  13766. pOUEb9galPAM7AXO9HE/CEwPcF/JQcP/EPAVribRBpdp53i3FFzm/nsgGRiCy/SK01ViGvz+t7ga
  13767. ZWNgATA6jObXgTtwGXIq0LuEe9sEV0tM87/Rm8B7Ae5TgKsDjtNxhYsrgSSvexPQJYyW03EZWR4u
  13768. g9/m/+/y+31wmYICmQHhLgTmxsM2xHuzpp7Y0gTYpKoFpfgbJiLbArcg96bAuhDh1uFevMb+WqH8
  13769. BMZBGD/rAtzDIiJtcZnNa6q6HpcJXF5auCA2BaX1qAjDjQbuUNUcVc3HGcshxc0wqvq8qu4McDte
  13770. RBqUUVsgRcBdqpqvqntwNYenVXWGqhaq6ou4ZrKeJUUiIvVxNbZ7VHV7CV6nqupEVS30/o8P428Y
  13771. cL+qblHV1cDjAW49cQb/UVXdr6pv4ZqciokkDY+r6lpV3QJ8gMu0QrEf12TSUlX3qmrYfiFV3ayq
  13772. b6vqblXdiSvl9wnnH1crWamq/1bVAlX9HngbGBom/kmq2hB4z/tphcvEmqpqQ1X9Atf8Bq6GUswO
  13773. XEZU6zDDH1s2A00jaCN+wz+gB7Yg901AixDhWuAM1FZ/rVB+AuMgjJ8WAe4lMQJYoKpz/PGrwKUi
  13774. khxB2GKaBqV1QYTh2gHvBmSMC3C1nUwRSRSRh0RkmYjswL30EEFmVgIbVXVv0PVvDsqc2+BKxyER
  13775. kbo44zldVR8s5XqBHZG7gdQwz01LXGm4mFVBbmvUF2dDuEeShmAd4folbsU1H37rRx1dFcYfIpIm
  13776. Ik+LyCr/+3wJNBSRxDBB2gE9gnQOB5qHiT/H+7kE15+ywcexTkT+7r3l+f/1A4I2wDWJ1TrM8MeW
  13777. abgS1XkVjOdzQpd2huGaaHZ7P90DR+gEsQjXbn1IPCKSgKvyTopAx+VABz8iIhf4O864nhlRKirG
  13778. amBQUKaRqqprcJ3Zg3F9AQ1wzUrgDBO4Kn4wu3FND8UEG5XgMKtxJe3A66ep6uuhxIpIHVwJNAf4
  13779. TWRJjIh1OGNdTNsgt1YiImHcy5SGklDVXFW9RlVb4tL3zxJG8twMHAn0UNX6wGn+fLjfZzWu2TJQ
  13780. Z4aqXhtGS2tcs+rnvtD0DPA7H+4m72cr7v4E1qSOx/Wn1DrM8McQX7X/M/CkiJznSz7JIjJIRB4u
  13781. Q1T3AL1E5H4RaSwi9UTkepwh/qO/1ue4zrB3RSRbRJK8v9EicpUvBd4C3ClueGmqiDQHnsOVgv4R
  13782. cD3x7oHbycDhQHdc9f8E4BjcKKGyNveUhzHA/SLSzgtsJiKDvVs9XAa7GWfMHwgKux7oEHRuDq62
  13783. kuhHdpTU9ADwLDBaRHqII11EzhKRXzQV+BrQW7jO9pGqWhR5MkvlDeB2EWnkM/nrA9ym4fombvDP
  13784. 2QW436vMaSgNERkaUMjYijPexekMvt/1cPdim4g0Bu4Kii7Y/wTgCBEZ4dORLCLdSmkWzMZ1agOc
  13785. hBvZE8xLuOe/kY/rGlzfTq3DDH+MUdVHgJuAO3GjGlYD1+FKg5HGsQTojSuhrMSVXC4Efq2qXwd4
  13786. HQJMxI3G2I7r+OuKqw2gbujkCFzn32bcqJC6wCmqujkgnl64FzVw+y/gfVWd60t7uaqaCzwGnO1f
  13787. 6EjYJoeO4490LPVjwHjcENaduI7e4rHxL+GaNNb4NE0PCvsvoItvNii+7zcC5+A6/4ZTyu+hqrNw
  13788. huIJnKFbiusID0UvXDv1AA5N76mRJbVE7sGldQXwKa4/oFjjPuACr2sLbkTNO+VMQ2l0A2aISB7u
  13789. d7lRVZd7t7uBF/39HobrbK+La06cDnwcFNdjuP6arSLyuO8HGABcjBuJk8vBjvZwZAPf+dpOZ0KX
  13790. 5O/CjQpbhetQflhVg7XUCuTQ5kDDMAyjpmMlfsMwjFqGGX7DMIxahhl+wzCMWoYZfsMwjFpGWSef
  13791. qhSaNm2qWVlZMYl7165dpKenxyTuaGEao0N10AjVQ6dpjA6x1Dh79uxNqtosIs+xnA+ivFt2drbG
  13792. ismTJ8cs7mhhGqNDddCoWj10msboEEuNwCyN0MZWyRK/YRhlR4tg3Xew+hso2AtFhSACLbKh7SmQ
  13793. nFZ6HEbtwAy/YVRzcmbAt4/Dsk9hd5gZlxKSoXVP6Doajr4IEsLNkmPUCszwG0Y1ZeMC+M8dsPBd
  13794. qNsYOp0Jhw+E9v2gTgNn3AvyIWcarJgMiz+Ad4bDl/dB37uhyxAQG95RKzHDbxjVjKJCmHI3TH3A
  13795. Nd/0vQd6/h7qhJhxJykVOg50W/8HYf7bMOUueOsiOHwAnP8ypB9W6Ukw4ozl94ZRjchbD68MgK/u
  13796. g+NGwA3Loc+fQxv9YCQBjh4K186FM/8Jq76EMce72oBRuzDDbxjVhJwZ8PSJrvP23OfhvBcgPbLB
  13797. e4eQkAjdroWrZ0BqQ3jpdJj2j9LDGTUHM/yGUQ1Y9SW83B+S6zqDfeKVFY8z8zi4ZiZ0uRA+vck1
  13798. H9mcjbUDa+M3jCrO8s/h9XOhYTu4fBLUC7vmV9lJyYALx0LKKPjiHsjfCQP+5oaBGjUXM/yGUYVZ
  13799. +gmMHQxNj4QRn8WmIzYhEc591mUC0/8ORfth4GNm/GsyZvgNo4qydha8cQE06wKXf+6GbMYKSYCB
  13800. j0JCkjP+GS3g1Ntjdz0jvkTUxi8iA0VkkYgsFZHbQrh3FpFpIpIvIreUJaxhGL9k63J47SxIz4Th
  13801. H8XW6BcjAgP+CscOh//8Cea8EPtrGvGh1BK/iCQCTwJn4BaOniki41V1foC3LcANBC0qHmFYwzAC
  13802. 2LURXhnoxusP/wgyMivv2pIAg5+HXeth/NWQ0dx9A2DULCIp8XcHlqrqcnVreo4FBgd6UNUNqjoT
  13803. 2F/WsIZhHKRwn2ve2bEaLvnAte1XNokpMOwdN+rnrYtg08LK12DElkgMfyvcAuHF5PhzkVCRsIZR
  13804. 6/j49/DzVBj8b2hzcvx01KkHF78HiXVg7HlQkGeT+9QkqkznroiMAkYBZGZmMmXKlJhcJy8vL2Zx
  13805. RwvTGB2qg0Y4qHPdxOYs/mdnWl/0M5uaL6cqSO90RwN+vPl4frr3CBLTplTpuX2qw+9dVTRGYvjX
  13806. AG0Cjlv7c5EQcVhVfQZ4BqBr167at2/fCC9RNqZMmUKs4o4WpjE6VAeN4HR2SuvL1Megwxkw/NW2
  13807. JCS2jbcsR19olQwTf5cJUzLpe2+8BYWnOvzeVUVjJPn3TKCTiLQXkRTgYmB8hPFXJKxh1Ar2b0/i
  13808. jSHuw6wLX696UyZ3vRaaD1rHl/8LSz+OtxojGpRa4lfVAhG5DvgESASeV9V5IjLau48RkebALKA+
  13809. UCQi/w10UdUdocLGKjGGUd3QIlj44FHsWg9XfQNpTeKt6JeIQMcbl6BrWvDOZTB6DtRvHW9VRkWI
  13810. qI1fVScCE4POjQnYz8U140QU1jAMxzd/gy0zmjDoCWiZHW814UmsU8TQN+GZbHjrYhg5GRKT463K
  13811. KC9VuKvGMGo2P0+FSX+CZn020O238VZTOk2OgHOehdVfuwVgjOqLGX7DiAO7N8Pbl0DDLDjiD4uq
  13812. zbw4x1wM2aPhm7/Cko/ircYoL2b4DaOSUYXxV7lFVYa+AUnphfGWVCZ+/Xc47Fh473LYuTbeaozy
  13813. YIbfMCqZb5+ARePhjL9Ci5PirabsJNeFIeNg/254d4SbWsKoXpjhN4xKJHcOfHYLHHE29Lgh3mrK
  13814. T7OjYND/wYr/wNQH463GKCtm+A2jktiX5+a+SWvqpmSoLu364TjhSjjmErdy189T463GKAtm+A2j
  13815. kpj4O9iyFC54zRn/6o4InD3GrQz29qWwZ0u8FRmRYobfMCqBH15y22l/hqw+8VYTPerUd+39ebkw
  13816. /r9szd7qghl+w4gxmxbBh7+Fdn3gtDvjrSb6tOwK/R+Che/BzCfjrcaIBDP8hhFD9u9x7fpJqXDB
  13817. q1VvHp5o0fP30Oks+PRmWDs73mqM0jDDbxgx5OP/hvU/wHkvQv0avBKFCJz3glsM/q1hsHdbvBUZ
  13818. JWGG3zBixI+vwHfPwCm3wRFnxVtN7Elr6tr7t/8M719l7f1VGTP8hhEDNs6HCb+BdqfBr/433moq
  13819. jza94PQHYeG7MOPxeKsxwmGG3zCiTP5OeGMIpGT4+fWrzDp3lcPJN8MR57gP1Wx8f9UkIsMvIgNF
  13820. ZJGILBWR20K4i4g87t1/FJGTAtxWishcEZkjIrOiKd4wqhqq8P4VsHmRM/r1WsZbUeUjAue/5Cag
  13821. e3OozedTFSnV8ItIIvAkMAjoAlwiIl2CvA0COvltFPBUkHs/VT1BVbtWXLJhVF2+egAWvOPm4Wn/
  13822. q3iriR+pDeGidw/Wfgry463ICCSSEn93YKmqLlfVfcBYYHCQn8HAS+qYDjQUkRZR1moYVZrFH8Lk
  13823. /4Fjh7vhjbWdw45xU1PkTIOPqvG8RDUR0VK63kVkCDBQVa/2xyOAHqp6XYCfCcBDqjrVH08C/qiq
  13824. s0RkBbAdKASe9ouqh7rOKFxtgczMzOyxY8dWOHGhyMvLIyMjIyZxRwvTGB0qU+OulWl8f91J1G2x
  13825. hxP+73sSU4siDlvT7+XyZzqw+vW2dLx+Ca0uWBNlZQep6fexNPr16zc74lYVVS1xA4YAzwUcjwCe
  13826. CPIzAegdcDwJ6Or3W/n/hwE/AKeVds3s7GyNFZMnT45Z3NHCNEaHytK4c53qP9qp/jVTdevKsoev
  13827. 6feysED19cGq9ySoLvogepqCqen3sTSAWVqKbS3eImnqWQO0CThu7c9F5EdVi/9vAN7FNR0ZRo1g
  13828. /254/VzYvREuneAmLDMOJSHRfbXc/ES3Xu+67+OtyIjE8M8EOolIexFJAS4Gxgf5GQ9c7kf39AS2
  13829. q+o6EUkXkXoAIpIODAB+iqJ+w4gbRYXwznBYO8uN4GlpQxfCkpIOl4yHuo3h9bNh26p4K6rdlGr4
  13830. VbUAuA74BFgAvKGq80RktIiM9t4mAsuBpcCzQPHS0ZnAVBH5AfgW+FBVP45yGgyj0tEi+GCUm5hs
  13831. 4KNw5LnxVlT1qdcSLv0Q9u2Cl/u7GT2N+BDRpyWqOhFn3APPjQnYV+B3IcItB46voEbDqFKoujl4
  13832. 5jwPfe6q3itpVTaZx8Lwj+DlM9x2xReuFmBULvblrmGUAVWY9Cf49v/cF6p97oq3oupHm5Ph4vdh
  13833. 82J4ZSDs3R5vRbUPM/yGESGq8Plt8PVDkD3afaRV3ZdPjBcdToehb0Lu9/DS6bB7U7wV1S7M8BtG
  13834. BBQVujb9bx6Grr+Fs540o19RjjwXLnoPNs6DF/rY1A6ViRl+wyiFgnx4+xL4/jk49U448wkQe3Oi
  13835. whFnuTb/7T/Dv091axIbscceX8MogZ3r4MV+MP9NGPCIm2LZSvrRJasvXD7JtfU/2x2WT4q3opqP
  13836. GX7DCMOamfBsN7eC1tA34eSb4q2o5tKqO1zzrVul7JVfw4z/s4VcYokZfsMIQhVmjXFND4nJcNU3
  13837. 0GVIvFXVfBp1cPf6iLPh4xvcx3G2hGNsMMNvGAHsXAevnQUfXuuaIK6ZCc3tS5RKo049uOgd6Hcf
  13838. zHsDxhwPK7+It6qahxl+w8B9ifvDS/DUsbByCgx6wnU6pjWNt7LahyTAaXfAf30DiXVcH8tHN1jp
  13839. P5qY4TdqPWtmwr96wXsjoUkn+M130P131okbb1p1d79Ft9/CzCfh/46A7//tMmmjYpjhN2ot6+e6
  13840. YZrPdYftq+C8F+Gqr6Fp53grM4pJyXDDZ6+Z5TLl8VfB0yfC/LcsA6gItWwZaKO2o+oWAJ/2CCx6
  13841. 3xmW3rdD79ugTv14qzPC0eJEuHIq/PQ6fHGvW8u3WRfo9Qc4ehgkp8VbYfXCDL9RK9i5Dua+Ct89
  13842. 5xZCT20Efe6GHtfbJGHVBRE49lI4+iL3XcWX98H7V7oJ844bAYXHZKB9rIkuEszwGzUSLYJdK9L5
  13843. +ls3dXLOdEChzSmudN9lqJsj3qh+JCTCMRe7DODnr2D20/DdM1C4ryvLHoDO58MR50CbXpBcN95q
  13844. qyYRGX4RGQg8BiTilmF8KMhdvPuZwG7gClX9LpKwhhENdm+G3Dlu0q/V38CqL2HP5m4AtMiGfve6
  13845. sfjWfl9zEIF2p7lt4OMw/uGF6PzOzBoDMx6DxBRo1QPangotTnJbwyyrEUAEhl9EEoEngTOAHGCm
  13846. iIxX1fkB3gYBnfzWA3gK6BFhWMMoES1yQ/l2bXQTee1cAztyYMsy2LLEbYETfDVsD0eeA3sOW8ig
  13847. 6zrToE34uI2aQVoTaD4ol75/6Uz+TlcTWDkFVk6Gr/8CWuj8pdSDJke4rXFHqN8G6rd2XwynNXPD
  13848. dxOT45qUSiGSEn93YKlfVAURGQsMBgKN92DgJb8gy3QRaSgiLYCsCMJGjXlvHvyBw7Fh/mH8VMVX
  13849. /qlMjWE/i9cwfvz++vmZ/LDaHase/K9FfrSFuhkttcj9JkWFUFTgt/1QuN/9L8iHgr1QmA/7d7k1
  13850. bPftgvwdkL/dzd+yZ0vo3zWtmRvp0eEMaHY0ND/BbenNnPuUKbk0aGNF/NpGnXrQ6Uy3gXu+1s+F
  13851. dd/BhrmuoJAzHeaNCz0yqE4DSG0IqQ3cfkqG6zxOSYfEVEhKhaQ6rkaRkOwyioQkt0mia4qSBLcv
  13852. 4vcTAIHcRc2Zs8rXOiSg9uH/J6VClwtjf48iMfytgNUBxzm4Un1pflpFGBYAERkFjALIzMxkypQp
  13853. EUg7lK8uP5WivYml+OrCgjLHXNlUB41HsbCCMUhyEQnJRSSk+P+pRSSmFpJQp4ik9AKS2hbQIL2Q
  13854. pg32k+y3lMb51GmWT51m+0isezA32I970FbPOxh/Xl5euZ6jyqY66KwRGo+EtCMhDWgNFBUI+zan
  13855. kL+xDvs21WH/9mT2bUumYHsyBbuSKNiVxN6diRRtTKRwTyKFexPR/ULRvgS3FSRAUVnbjTqzqATX
  13856. 5Eb72NDkmzLGWXaqTOeuqj4DPAPQtWtX7du3b5njOGYOh5RUQ/Htt9/SvXv3sgusRCpdY5hn95C2
  13857. UDn0/IwZM+jRs8dBf770UlzKQXzJx5d+EpLccUKSKyUlJIL7jCT0pyTr169n6NChfD/5e0aNGsUj
  13858. jzxS5mRNmTKF8jxHlc0VV1xBQUEBr7zySkj3o48+mieffDJkWqZMmcJll11GTk5O2Lhbt27Nfffd
  13859. VyGN1eFexkOjFvnaa4Gv2Ra4c0WF7ri4NlxU6P5Pmzadnj16HjgPh9aoExJTaNShEtKgqiVuwMnA
  13860. JwHHtwO3B/l5Grgk4HgR0CKSsKG27OxsjRWTJ0+OWdzhePXVVzU7O1vT09O1efPmOnDgQP3qq69U
  13861. VfWuu+7S4cOH/0IjoEuWLDlwbt68eXrOOedo/fr1NSMjQ/v27atff/31IeHy8/P1rrvu0o4dO2pa
  13862. Wpq2a9dOr7zySl2xYsUBPx988IF269ZN09LStHHjxnrppZfq6tWrD7j/+9//1lNOOaXE9IwcOVIT
  13863. EhJ07dq1B8795je/0fT0dE1PT9fk5GRNSko6cDxw4EBdsWKFAgfOFW9jx44NeY17771Xzz//fC0q
  13864. Kir55pZA8W89cuRIveOOO8odT1lZv369XnzxxdqiRQutX7++9urVS6dPnx7W/8iRI3/xDETK5MmT
  13865. tVWrViXGHY20l+W9CX52S6NPnz767LPPlkPVoUyePFmHDh2qn3zyie7du1czMzMPcR83bpyefPLJ
  13866. WrduXe3Tp0+Fr1dejbECmKWl2NbiTbSUuU9FJAlYDJwOrAFmApeq6rwAP2cB1+FG9fQAHlfV7pGE
  13867. DXPNjcCqCPKt8tAUqMyF3jKB5rj07MDl8/WBerimr5ZAHWBFkMZ2wE9Avnc/CtgI5Po4muKa0hYD
  13868. u3y4jkCyv9Zu3Eiqxt7/JqARrt9lFbDVu7f2WuYDhUATH3e4GmkCUDxt2VpgfQg/odKUAhwLzA4T
  13869. bzDtcC04FVmXqfi3zgL2VTCuspCCu9dbcGko/q3mAqG+N+2Iu/crQriVRj2gPfBjGPcsopP2srw3
  13870. 2Rx8diPhSGBzGeIPR1Pcu7YA9/y1xr0fxdTDtXKk4t7BklpdYkUs7U87VW0Wkc9IcgecQV8MLAPu
  13871. 8OdGA6P9vuBG7yzDPdxdSwobz40y5IpRuFYDIA8YWoKfu4FXgjXijHVHf/wyMDFE2KeAL/1+f2AP
  13872. 0CbMdQRn8G8NOp+Ae0nv9cdXAFNL0Hs5rjn9Z+CnMqQpy6cpKYL79gLOYO7z96+/13mbf442A28A
  13873. jQPCvInLFLcDXwJH+/s4KiiuD7z/A/c34Jr3+f2+uEz5jz7Ol/35s4E5wDbgG+C4MjwLO4DsMG5r
  13874. fXpeAnYC84LeoZVAf79f12vdisus/wDkBPg9EfjOxzMOGFucrtLS4K9zCy4T2e7Dp4Z6b3CZ1Rfe
  13875. 3yZgnD//pb+3u/z9vgiXCU7AFVy2+v3W3v/9uExvr/f/hD/fGfgMl3kuAoZFcI+/B5b7/WuBh8P4
  13876. uxqYUll2IPjdjsd1f6Ej3gJq8o0HBgIFlGDsiMzw5wJXhgjbz780dYGHgC9KuE5nH2f7EG73ANP8
  13877. /hWUbPgnAQ9741EQypiFSVMWERp+7/+FIIN1IzAdV4qrg2tefD3A/Spcia4O8KjXNytUXP5caYa/
  13878. APiLj68uzqBuwNVoE4GROENZJ4K0nOANW4Mw7mu9+5k+7geB6QHuKzlo+B8CvsLV5NrgMu0c75aC
  13879. y9x/j6v5DcFlesXpKjENfv9bXI2tMa7kXFy4Czb8rwN34DLkVKB3Cfe2CXAhrl+1Hi6Tfi/AfQpw
  13880. dcBxOq5wcSWuhH4iLnPpEub+nY7LyApxGfw2/3+X3+8T5L/WG36bpC22NAE2qWpBKf6Gici24g1n
  13881. KAJpCqwLEW4d7sVr7K8Vyk9gHITxsy7APSwi0haX2byGM4yTcDWAsrApMK0iclSE4Ubjaow5qpqP
  13882. y1yG+OZEVPV5Vd0Z4HY8zriVlyLgLlXNV9U9uJrD06o6Q1ULVfVFXFNGz5IiEZH6uBrbPaq6vQSv
  13883. U1V1oqoWev/hVgEYBtyvqltUdTXweIBbT5zBf1RV96vqW7jm1WIiScPjqrpWVbcAH/DLZ7GY/bjm
  13884. uJaquldVp4ZLmKpuVtW3VXW3qu7ElfL7hPOPq5WsVNV/q2qBqn4PvA0MDRP/JFVtiDPyQ3HNaiuB
  13885. pqraUFVtRv8gaqPhf6YSr7UZaFpsnErgDf+ANvQP8G+D3DfhOsuDaYEzUFv9tUL5CYyDMH5aEFm7
  13886. 4whggarOwd3HV4FLRaQsn7w0DUyrqkY6crUd8G5A5rgAV8LLFJFEEXlIRJaJyA7cSw/wVhl0BbNR
  13887. VfcGXf/moAy6Da50HBIRqYszntNV9cESrjUbV6srZjeQGua5acmhQ6RXBbmtUV+0DOEeSRqCdWT4
  13888. /eD35lZc8+G3IjJPRK4KnTQQkTQReVpEVvnf50ugof/AMxTtcB+ABuocjmu/DxV/jvfTCHgRV6tp
  13889. B6wTkb+H0xUnKtP+hKXWGX51w0Yri2m4EtV5ZQkUQuPnhC7tDMM10ez2frqLSOsw0S7CtVsfEo+I
  13890. JOCq4ZEscX050EFEcoF7gb/jagpnRhC2oqwGBgVlGqmquga4FPdhYH9cv0qWDzPO/w81gmE3rumh
  13891. mGCjEhxmNa6kHXj9NFV9PZRYEakDvIe7578pJW2RdniDq50FfovcNsitlZ9CJZR7mdIQSPAzqaq5
  13892. qnqNqrbEpe+fItIxTPCbcR24PVS1PnCaP1+sM9S9/iJIZ4aqXhtGW2tcs+pnvuD0DPA7H65KrZRc
  13893. yfYnLLWHdnnYAAAgAElEQVTO8Fcmvmr/Z+BJETnPl3ySRWSQiDxchqjuAXqJyP0i0lhE6onI9ThD
  13894. /Ed/rc9xnWHviki2iCR5f6NF5CpfCrwFuFNELhWRVBFpDjyHG+Hwj4DriXcP3E4GDsd9yX2C347B
  13895. NfuUtbmnPIwB7heRdl5gMxEZ7N3q4TLYzThj/kBQ2PVAh6Bzc3C1lUQ/n1RJTQ8AzwKjRaSHONJF
  13896. 5CwRqRfs0deA3sJ1to9UjerM8W8At4tII5/JXx/gNg3XBHeDf84uwP1eZU5DaYjI0IBCxlac8S5O
  13897. Z/D9roe7F9tEpDFwV1B0wf4nAEeIyAifjmQR6VZKs2A2rlMb4CRcP1mw5kQRScX1GyT457oWTNDw
  13898. S8zwxxhVfQS4CbgTN6phNW7o63tliGMJ0BvX7rsSV7K7EPi1qn4d4HUIMBFX0t2O6/jriqsNoKrj
  13899. cM01v8cZyfm4jstTVHVzQDy9cC9q4PZfwPuqOteX9nJVNRc3Ad/Z/oWOhG0ikhewRVoiewwYD3wq
  13900. IjtxHb3FX4G/hGvSWOPTND0o7L+ALr7ZoPi+3wicg2sXHk4pv4eqzgKuAZ7AGbqluI7wUPTCtVMP
  13901. 4ND0nhpZUkvkHlxaVwCf4voDijXuAy7wurbgRtS8U840lEY3YIaI5OF+lxvVT82C62N50d/vYbjO
  13902. 9rq45sTpwMdBcT2G66/ZKiKP+36AAcDFuI7vXA52tIcjG/jO13Y640ZGBTMC9yw/BZzq958tU6pr
  13903. CKWO4zcMwzBqFlbiNwzDqGWY4TcMw6hlmOE3DMOoZZjhNwzDqGVUmWmZA2natKlmZWXFJO5du3aR
  13904. nl61F1s1jdGhOmiE6qHTNEaHWGqcPXv2Jo3mJG3hNtxHE4tww8JuC+E+HDfh01zchFDHRxJvTZuW
  13905. uayYxuhQHTSqVg+dpjE6VJVpmctd4pfI1tNdgZsgaauIDMJ9URdyBS7DqAooSi47WEgum8jjCDI5
  13906. iuakVM3KsWGUi4o8zaWuxauqgWuIFc+saBhVkoXk8jHz2MFeBEinDgvI5SN+4mhacgZHkUqt/NDT
  13907. qGGU+wMuERkCDFTVq/3xCNxcHNeF8X8L0LnYfwj3wDV3s8eOHVsuXaWRl5dHRkZG6R7jiGmMDmXR
  13908. uP6wAhYdlU9GXgIt1yTRZHMSSfthR4Mi1jcvYH1mAfV2JnDMj6kkFZZ1ndXo6YwXpjE6xFJjv379
  13909. Zqtq14g8R9omFLzhpgd4LuB4BH4RhRB+++FmU2wSSdzWxj853hJKpSZp/E5X6T06QV/UaZqv+0P6
  13910. ma9r9V79UJ/Xr8P6KS816V7Gk9qukTK08VdkOOcaDp0lsLU/dwgichxuIrDBeuh8MIYRd34khw+Y
  13911. y+E04xK6hW3LP4oWXMAJ5LCV15nJfgorWalhRI+KGP6ZQCcRaS8iKbgJlcYHehC3cMc7wAhVXRwi
  13912. DsOIG9vZw0Tm0ZbGXEQ2yaWs23I0LTmPE1jFFr7AHmej+lLuzl1VLRCR64BPcCsdPa+q80RktHcf
  13913. g5uSuAlurm6AAo20DcowYoiiTGAuijKY40mKcLGuY2nFSjYzjRUcTUta0CDGSg0j+lRojJqqTsRN
  13914. Axx4bkzA/tW49S0No0rxAzksYyMD6UKjQ9ZjKZ3+HMUSNvABP3I1p5BgH8Ab1Qx7Yo1ax0728inz
  13915. aUtjuh1YrCty6pLMII4mlx1MZ0X0BRpGjDHDb9Q6PmUBBRRxDschlG9oZmeacySZTGExW9gVZYWG
  13916. EVvM8Bu1ilx2MI+19KQDTSj/nCmCcCbHIIh19BrVDjP8Rq1iMotIJYlev1iCt+zUI5VuZDGXtWxg
  13917. ZxTUGUblYIbfqDWsZitL2EAvDo/a1Au96EAKSVbqN6oVZviNWoGi/IeFpJNC93J06IYjjRR60p4F
  13918. 5LKO7VGL1zBiiRl+o1awgs2sYgu96Rj1mTZ70p5UkplipX6jmmCG36jxKMoUFlOfVLJpG/X4U0mm
  13919. Fx1YwgZy2Br1+A0j2pjhN2o8P7OVHLbSi8Mj/kK3rHQni7okM5WlMYnfMKKJGX6jxvMNy0gjhRMP
  13920. mVMwuqSQRDeyWMwGG+FjVHnM8Bs1mvXsYAkb6E5WqZOwVZTuZJFEAtNYHtPrGEZFMcNv1Gi+YRkp
  13921. JJZraoaykkYKJ9GWuaxhO3tifj3DKC9m+I0ay97UIn5iHSfRlrqVtGRiT9qjYHP4GFUaM/xGjSWn
  13922. 9X4EZ4wri4akcQwt+Y6f2cO+SruuYZQFM/xGjWQ3+8htUcBxtKI+dSv12r3owH4KmcmqSr2uYUSK
  13923. GX6jRjKTVRQlwslRmJOnrGRSn44041tW2hKNRpXEDL9R43Cl7ZU03pRIM+rFRUMvDmc3+/iRnLhc
  13924. 3zBKwgy/UeP4gRx2s4/WqyunQzcU7WhMSxowjRUUoXHTYRihMMNv1CiKUKaxnJY0pMH2+D3egnAy
  13925. HdjCLhazPm46DCMUZviNGsUictnKbnrRodyra0WLo2hOI9L4mmWolfqNKkSFDL+IDBSRRSKyVERu
  13926. C+HeWUSmiUi+iNxSkWsZRmkoytcspxFpdKZ5vOWQQAI9ac8atrHaJm8zqhDlNvwikgg8CQwCugCX
  13927. iEiXIG9bgBuAv5VboWFEyAo2s5ZtnEwHEuJc2i/mBNqQRopN3mZUKSpS4u8OLFXV5aq6DxgLDA70
  13928. oKobVHUmsL8C1zGMiPiKJdSjDifQOt5SDpBMIj1oz1I22kItRpVBVMvX9igiQ4CBqnq1Px4B9FDV
  13929. 60L4vRvIU9WwJX8RGQWMAsjMzMweO3ZsuXSVRl5eHhkZGTGJO1qYxrKzvX4hP5y0lw5LU2id40bz
  13930. VBWNBYnKjJN302hrIl3mpf7CvaroLAnTGB1iqbFfv36zVbVrJH6juxRRBVDVZ4BnALp27ap9+/aN
  13931. yXWmTJlCrOKOFqax7LzGt6RRxLCO/Ujp6B7rqqQxkUV81WwpXfpmc1jQtwVVSWc4TGN0qCoaK9LU
  13932. swYOmeC8tT9nGJXKOrazlI30ICvqyypGix60J5lEvra2fqMKUBHDPxPoJCLtRSQFuBgYHx1ZhhE5
  13933. U1lKHb8QSlUljRS60o6fWMsWdsVbjlHLKbfhV9UC4DrgE2AB8IaqzhOR0SIyGkBEmotIDnATcKeI
  13934. 5IhI/WgINwxwpf0F5NKdLFIraerl8nIy7Ukgga+s1G/EmQrVi1V1IjAx6NyYgP1cqEJDLIwaxyQW
  13935. UpfkuEzGVlYySKUb7ZjOCnrSnkysDGTEB/ty16i2LGcTy9lEbzpW+dJ+Mb3pSB2SmMTCeEsxajFm
  13936. +I1qiaL8h4XU96Xo6kIaKfSmI0vZyEo2x1uOUUsxw29USxaQy1q2048jSYrxIurRpjtZ1CeVz1lg
  13937. c/gYccEMv1HtKKCQ/7CQw6jHsbSKt5wyk0wifTmCtWxnPuviLceohZjhN6odU1nGFnbTn6OqzJw8
  13938. ZeU4WpNJPT5jAQWJVuo3Khcz/Ea1YiM7mcpSjqElHWkWbznlJgHhTI5lB3tZ2d4WZTcqFzP8RrVB
  13939. USYwlxSS+DXBE8FWP9rQiO5ksbZVAavZEm85Ri3CDL9Rbfie1axmKwM4inTqxFtOVPgVR1InX/iA
  13940. uRTYwuxGJWGG36gWbGU3n7GAdjTm+Br0TWAKSXRanMIm8uyLXqPSMMNvVHn2U8ibzEaAczk+7ksq
  13941. RpvGW5I4ntZ8xVKWsiHecoxagBl+o0qjKBP5iVx2cB4n0Ii0eEuKCWdyDJnU5x2+t0ncjJhjht+o
  13942. 0szmZ34gh9PoxBFkxltOzEgmkYvIRhDGMYt8CuItyajBmOE3qiyLWM/HzKMjzehDp3jLiTkNSeNC
  13943. TmITebzL9xRSFG9JRg3FDL9RJVlILm8ym+bU5wJOrHHt+uHoQFMGcjSL2cAbzLaRPkZMMMNvVDnm
  13944. s443+Y6WNOAyelSbmTejRTeyOItjWMIGXmcm+6zZx4gyZviNKkMRylcs4W2+ozUNGV4LjX4x2bTj
  13945. PI5nJZt5mRlsZXe8JRk1iKq5QKlR69jOHt5lDj+zhaNpyTkcW2XXz60sjqM1KSTxPj/wNF8xkC4c
  13946. T+ta0+xlxI7a/WYZcWc/hcxiFV+xlCKKGMzxHEcrM26ezjSnOfV5nx8Yz48sYj39OJLDqBdvaUY1
  13947. xgy/ERf2sp855PA1y9hFPu1pylkcQ2PS4y2tytGQNEbQk+ks5wuWsIj1HEVzetORFjSItzyjGlIh
  13948. wy8iA4HHgETgOVV9KMhdvPuZwG7gClX9riLXNKovu8hnOZuYxzqWsZFCisiiCUM5ibY0jre8Kk0C
  13949. Qi8O5wTaMIMVfMtKFpBLUzI4iuZ0pjmZ1K+201QblUu5Db+IJAJPAmcAOcBMERmvqvMDvA0COvmt
  13950. B/CU/2/UUAopYjf72MletrKbLexmIztZw7YDHZT1SKUr7TiGlrSiYZwVVy/SSKEfR3IyHZjLGhaQ
  13951. y1SW8hVLSSGRFjSgJQ1pTDoNqUsj0kinDikkWvOZcYCKlPi7A0tVdTmAiIwFBgOBhn8w8JKqKjBd
  13952. RBqKSAtVjcmyQx/xU6kfvaw9Ip88fozF5aNGrDWGW/ajeBlA/cWxUnTgv1JEERuP28sqprGfIvZT
  13953. wD4K2cv+kF+c1iOVVjQkm7a0oTGtaWhGqIKkkkw3suhGFrvIZxkbWcM21rCdb1n5i/cgASGNFFJI
  13954. IoVEkkkkiQQS/ZaAkIAE/HHgP8C6I/PZWcIzWRV+zZrwbqeQxIBKmHK8Ioa/FbA64DiHX5bmQ/lp
  13955. Bb9cb05ERgGjADIzM5kyZUqZBc3tsZuiUgaoauMituTnlDnuyiSuGvXQl1g04L93SygSiqSQbdu2
  13956. kVAkJBZCaqGQXgDJ+5NJ3i+k7BPq7kkgda+QWCjATvaxk2WsZlklJSUvL69cz1FlEy2ddYGOwOGk
  13957. kl9H2Zuq7E0tYn8KFCQp+5MLKUwsYF8i7ElUNAGKBDRBUeHABj7zD9jXhkVstfemwpSmMXm/kDKr
  13958. EibqU9VybcAQXLt+8fEI4IkgPxOA3gHHk4CupcWdnZ2tsWLy5MkxiztamEbV3NxcPfXUUzUjI0Nv
  13959. uummcsVRHe6jqurIkSN1+PDhYd27dOkSNi2TJ0/WVq1alRj3HXfcUVGJ1eJe1naNwCyN0H5X5AOu
  13960. NUCbgOPW/lxZ/dR4XnvtNbp27UpGRgYtWrRg0KBBTJ06FYC7776byy677BdhRISlSw/Ozz5//nzO
  13961. PfdcGjRoQL169ejXrx/ffPPNIWH27dvH3XffTadOnUhPTycrK4urrrqKlStXHvAzYcIEunfvTnp6
  13962. Ok2aNGH48OHk5Bwsgbzwwgv07t27xPRcccUVnH766axbd7DiNnr0aDIyMsjIyCAlJYXk5OQDx4MG
  13963. DWLlypWIyIFzxdu4ceNCXuOZZ56hadOm7Nixg0ceeaREPaVxxRVXcOedd1YojrKwYcMGLrnkElq2
  13964. bEmDBg045ZRTmDFjRrnjmzdvHn379o2ewBgT/OyWRt++fXnuueeicu1hw4bx6aefkp+fT/PmzQ9x
  13965. u+WWW+jUqRP16tWjc+fOvPTSS1G5ZnVEXEZRjoAiScBi4HScMZ8JXKqq8wL8nAVchxvV0wN4XFW7
  13966. RxD3RmBVuYSVTlNgU4ziDkUm0ByXnh24mnN9oB6u6aslUAdYEaSxHfATkO/djwI2Ark+jqa4ZrPF
  13967. cGAe345Asr/Wbtxoq8be/yagEZDl3bd699Zey3ygEGji414UJj0JwPF+fy2wPoSfUGlKAY4FZoeJ
  13968. N5h2wH5/jfJS/FtnAfsqGFdZSMHd6y24NBT/VnMhZCdUR9y9XxHCrTTqAe0hbMNxFtFJe1nem2wO
  13969. PruRcCSwuQzxh6Mp7l1bgHv+WuPej2Ja4n6TvUA6btDJEqjUebBjaX/aqWpkC1FHWjUIteEM+mJg
  13970. GXCHPzcaGO33BTfyZxnuoS+1mSfWG2WoDkXhWg2APGBoCX7uBl4J1ogz1h398cvAxBBhnwK+9Pv9
  13971. gT1AmzDXEZzBvzXofALuJb3XH18BTC1B7+W4fpufgZ/KkKYsn6akCO7bCziDuc/fv/5e523+WdoM
  13972. vAE0DgjzJi5T3A58CRzt7+OooLg+8P4P3N+Aa97n9/viMuU/+jhf9ufPBuYA24BvgOPK8CzsALLD
  13973. uK316XkJ2AnMC3xXgJVAf79f12vdisus/wDkBPg9EfjOxzMOGFucrtLS4K9zCy4T2e7Dp4Z6b3CZ
  13974. 1Rfe3yZgnD//pb+3u/z9vgiXCU7AFVy2+v3W3v/9uExvr/f/hD/fGfgMZ6gXAcMiuMffA8v9/rXA
  13975. w6X4Hw/cXFn2INR9jNcWdwGVnuDKNfwDgQJKMHZEZvhzgStDhO3nX5q6wEPAFyVcp7OPs30It3uA
  13976. aX7/Cko2/JOAh73xKAhlzMKkKYsIDb/3/0KQwboRmI4rxdUBngZeD3C/Clf6rQM86vXNChWXP1ea
  13977. 4S8A/uLjq4szqBtwNddEYCTOUNaJIC0neMPWIIz7Wu9+po/7QWB6gPtKDhr+h4CvcDW5NrhMO8e7
  13978. peAy99/jan5DcJlecbpKTIPf/xZXMm6MKzkXF+KCDf/rwB24DDmVQ/vygu9tE+BCIM3/Rm8C7wW4
  13979. TwGuDjhOxxUursQNQDkRl7l0CXP/TsdlZIW4DH6b/7/L7/cJEaYubpDJwMqyB6HuY7w2m6QttjQB
  13980. NqlqadMrDhORbcUbzlAE0pQQI6H8uQTcS9okjJ/AOAjjZ12Ae1hEpC0us3kNZxgn4WoAZWFTYFpF
  13981. 5KgIw43G1SpzVDUfl7kM8U2OqOrzqrozwO14nHErL0XAXaqar6p7cDWHp1V1hqoWquqLuKaMniVF
  13982. IiL1cTW2e1R1ewlep6rqRFUt9P6PD+NvGHC/qm5R1dXA4wFuPXEG/1FV3a+qb+GaYIuJJA2Pq+pa
  13983. Vd0CfMAvn8Vi9uOa41qq6l5VnRouYaq6WVXfVtXdqroTV8rvE84/rlayUlX/raoFqvo98DYwNEz8
  13984. k1S1Ic7ID8U1q60EmqpqQ1X9IkSwMcAPwCcl6Kix1EbD/0wlXmsz0LTYOJXAG/4Bbegf4N8GuW8C
  13985. WoQI1wJnoLb6a4XyExgHYfy0ILJ2xxHAAlWdg7uPrwKXikhZptBsGphWVV0QYbh2wLsBmeMCXAkv
  13986. U0QSReQhEVkmIjtwLz3AW2XQFcxGVd0bdP2bgzLoNrjScUhEpC7OeE5X1QdLuNZsXK2umN1Aapjn
  13987. piWHDpFeFeS2Rn3RMoR7JGkI1pHh94Pfm1txzYffisg8EbkqdNJARNJE5GkRWeV/ny+Bhv4j0FC0
  13988. A3oE6RyOa78PFX+O99MIeBFXq2kHrBORv4fw/1fgGFzzUfk6OctPZdqfsNQ6w6+qlXnjp+FKVOeV
  13989. JVAIjZ8TurQzDNdEs9v76S4ircNEuwjXbn1IPCKSgKuGT4pA2uVABxHJBe4F/o6rKZwZQdiKshoY
  13990. FJRppKrqGuBS3MeC/XH9Klk+TPGQoVAv9244ZAHfYKMSHGY1rqQdeP00VX09lFgRqQO8h7vnvykl
  13991. bZF2eIOrnQWOlGsb5NbKT5USyr1MaQgk+JlU1VxVvUZVW+LS908R6Rgm+M24DtweqlofOM2fL9YZ
  13992. 6l5/EaQzQ1WvDaOtNa5Z9TNfcHoG+J0Pd1OgXxG5BzejwABV3VFauqNNJdufsNQ6w1+Z+Kr9n4En
  13993. ReQ8X/JJFpFBIvJwGaK6B+glIveLSGMRqSci1+MM8R/9tT7HdYa9KyLZIpLk/Y0Wkat8yeYW4E4R
  13994. uVREUkWkOfAcbpTRPwKuJ949cDsZOBz3xfYJfjsG1+xT1uae8jAGuF9E2nmBzURksHerh8tgN+OM
  13995. +QNBYdcDHYLOzcHVVhL9nFMlNT0APAuMFpEe4kgXkbNE5BfTZPoa0Fu4zvaRqhrNNRTfAG4XkUY+
  13996. k78+wG0argnuBv+cXYD7vcqchtIQkaEBhYytOONdnM7g+10Pdy+2iUhj4K6g6IL9TwCOEJERPh3J
  13997. ItKtlGbBbFynNsBJuH6yYM234woJ/VV1c6mJrMGY4Y8xqvoIcBNwJ25Uw2rcENf3yhDHEqA3rt13
  13998. Ja5kdyHwa1X9OsDrEGAirqS7Hdfx1xVXG0BVx+Gaa36PM5LzcZ1cpwS9CL1wL2rg9l/A+6o615f2
  13999. clU1FzcJ39n+hY6EbSKSF7DdVHoQ8NcZD3wqIjtxHb3FX4q/hGvSWOPTND0o7L+ALr7ZoPi+3wic
  14000. g2sXHk4pv4eqzgKuAZ7AGbqluI7wUPTCtVMP4ND0nhpZUkvkHlxaVwCf4voDijXuAy7wurbgRtS8
  14001. U840lEY3YIaI5OF+lxvVT9+C62N50d/vYbjO9rq45sTpwMdBcT2G66/ZKiKP+36AAcDFuI7vXA52
  14002. tIcjG/jO13Y640ZGBfMArga0NOA3+VNZE14TKPc4fsMwDKN6YiV+wzCMWoYZfsMwjFqGGX7DMIxa
  14003. hhl+wzCMWkaVXHO3adOmmpWVFZO4d+3aRXp61V7X1TRGh+qgEaqHTtMYHWKpcfbs2Zu0MiZpi9Vm
  14004. 8/FPjreEUjGN0aM66DSN0aGqzMdfJUv8Rg1l716YPBmmTYPp02HuXNi9251XhcMPhy5d4Oij4Zxz
  14005. oGtXOOQjVMMwooEZfiP2LFoEzzwDL7wAW7ZAQgIcdxwMGgT160NqqjP8S5bAvHnw/vvwv/8LHTvC
  14006. pZfC6NHQoqRpiAzDKAsRGX7/SftjuNkOn1PVh4LcOwP/xn0qfYeq/i3SsEYNZuVK+MMf4K23ICkJ
  14007. zj8frroKeveGjIzw4bZtg3fegddeg/vug7/+FW68EW69FRo1qjT5hlFTKXVUj59B70ncxEZdgEtE
  14008. JHgZ+C3ADcDfyhHWqGns2gX/8z/QuTN8+KHbX70a3ngDBg4s2egDNGzoMojPP4fFi+GCC+Avf4EO
  14009. HWDMGFc7MAyj3EQynLM7sFRVl6ubC2QsbibEA6jqBlWdiZuju0xhjRrGnDlw0kmupH7BBa6Z5957
  14010. oXnIGXVL5/DD4ZVXXLzZ2XDttXDmmbC2slZRNIyaR6lz9YjIENwqNVf74xG46VWvC+H3biCvuKmn
  14011. jGFH4RaKIDMzM3vs2LEVSVdY8vLyyCitxBlnqqVGVVq99x6HP/UU+xs0YMHtt7PtpJOie1FVWr73
  14012. Hoc//TRFKSks/OMf2XzKKZFrrKJUB52mMTrEUmO/fv1mq2rXiDyXNuwHN+PjcwHHI/DrYobwezdw
  14013. S3nCBm42nHNyvCWUyiEad+9WHTZMFVTPOkt1w4bYXnzRItXsbFUR1QcfVC0qKl1jFaY66DSN0aGq
  14014. DOeMpKlnDYcu/NDan4uEioQ1qgMbN8Lpp8Obb7p2+A8+gGaRfUNSbo44Ar76Ci6+GG6/HS6/3A0J
  14015. NQwjIiIZ1TMT6CQi7XFG+2LcYgaRUJGwRlVnyRI3JHPNGmf4L7yw8q5dty68+qob83/nnfDzzy7T
  14016. qV+/8jQYRjWlVMOvqgUich1uUeJE4HlVnScio737GL+S0yzcSk5FIvLfQBdV3REqbKwSY1Qe6StW
  14017. wEUXQVER/Oc/cPLJlS9CBO64w3UAjxgB/fvDRx9BkyaVr8UwqhERjeNX1Ym4lZ0Cz40J2M/FNeNE
  14018. FNao5vzwAyf893+7YZn/+Q8ceWR89Vx8MaSnw9Ch0LcvfPqpffBlGCVgs3MaZeO77+BXv6IwNRW+
  14019. +CL+Rr+Yc85x3wysWAH9+sH69fFWZBhVFjP8RuT89JNrTqlXjzmPPuqmVKhKnH46TJzo2vvPOIOk
  14020. HTvircgwqiRm+I3IWLoUzjjDdapOnszeqtqUctppbq6fxYs57tZbYfv2eCsyjCqHGX6jdHJyXEl/
  14021. /3747DNo3z7eikrmjDPgrbfIWLoUzj4b9uyJtyLDqFKY4TdKZssWGDDA/f/kEzdtcnXg7LNZ8Kc/
  14022. wddfuxk+Cwrircgwqgxm+I3w7NkD554Ly5a5MfLZ2fFWVCY2/upX8Nhj8N578Nvf2uRuhuGx+fiN
  14023. 0BQWupLyN9+4WTX79Im3ovJx/fWQmwsPPOCGeN5zT7wVGUbcMcNv/BJVuOEGV1J+/HEYMiTeiirG
  14024. ffc543/vvdCunZvy2TBqMWb4jV/yt7/BP//pFj65/vp4q6k4Im4e/5wcGDUKWrWCX/863qoMI25Y
  14025. G79xKG++6Qz+RRfBgw/GW030SE52aTvmGFeDmTMn3ooMI26Y4TcO8s03bs6bU05x6+Mm1LDHo359
  14026. 93Vvw4Zw1lmuBmAYtZAa9mYb5WbpUjeCp21b17afmhpvRbGhVSv3de/OnW6M/86d8VZkGJWOGX4D
  14027. Nm92yxmCM4pNm8ZXT6w59li3APxPP8GwYTbG36h1mOGv7ezdC+ed5+a3ef/9qjf/TqwYMACeego+
  14028. /th1YNsYf6MWYaN6ajOqbmjj1Kkwdqxr269NXHON+zjtL3+BDh3gD3+ItyLDqBTM8Ndm7rgDXn/d
  14029. fdx00UXxVhMfHngAVq50I5natXNNP4ZRwzHDX1t5+mk3XHPUKLjttniriR8JCW4E05o1bkRTy5bQ
  14030. u3e8VRlGTLE2/trIxIlu7pozz4Qnn3QfONVmUlPdSKasLBg8GBYujLciw4gpERl+ERkoIotEZKmI
  14031. /KJ4KI7HvfuPInJSgNtKEZkrInNEZFY0xRvlYOZM15xx4okwbhwkWaUPcOv0Tpzo7sfAgbB2bbwV
  14032. GUbMKNXwi0gi8CQwCOgCXCIiwXPzDgI6+W0U8FSQez9VPUFVu1ZcslFuFi92pfzDDoMJE9yaucZB
  14033. Dj/cGf9Nm9x9skVcjBpKJCX+7sBSVV2uqvuAscDgID+DgZfUMR1oKCJVdImmWsratW4Io4hbjLx5
  14034. 83grqppkZ8M778C8eXD++ZCfH29FhhF1REsZvywiQ4CBqnq1Px4B9FDV6wL8TAAeUtWp/ngS8EdV
  14035. nSUiK4DtQCHwtKo+E+Y6o3C1BTIzM7PHjh1b4cSFIi8vj4wqXtKNtsakvDxOuPFGUtetY84//kFe
  14036. FBZIr+n3MfPTTznqwQfZeOqpzL/rLjQxMcrqDlLT72VlUds19uvXb3bErSqqWuIGDAGeCzgeATwR
  14037. 5GWC45AAAAwuSURBVGcC0DvgeBLQ1e+38v8PA34ATivtmtnZ2RorJk+eHLO4o0VUNe7cqdqzp2py
  14038. suqnn0Yt2lpxHx99VBVUR45ULSyMhqSQ1Ip7WQnUdo3ALC3FthZvkfTsrQHaBBy39uci8qOqxf83
  14039. iMi7uKajLyPKlYyKUbyC1syZbmbKM86It6LqxY03unb+u+5yE7v94x82AsqoEUTSxj8T6CQi7UUk
  14040. BbgYGB/kZzxwuR/d0xPYrqrrRCRdROoBiEg6MAD4KYr6jXDs2wdDh8KUKW6c+vnnx1tR9eR//gd+
  14041. /3u3hOPtt9vUDkaNoNQSv6oWiMh1wCdAIvC8qs4TkdHefQwwETgTWArsBq70wTOBd8WVkpKA11T1
  14042. 46inwjiU/Hxn9D/80C1Actll8VZUfRFxC9Ps3eumdhBxX/tayd+oxkQ0iFtVJ+KMe+C5MQH7Cvwu
  14043. RLjlwPEV1GiUhb174cIL3bDEJ56A3/wm3oqqPwkJ7l6qwkMPOaN///1m/I1qi329U5PYs8c16Xzy
  14044. iZuSYdSoeCuqOSQkuK+cVd1UF3v2wCOP1LzFaoxagRn+msK2ba4jd+pU+Ne/bEHxWJCQ4NYiTk2F
  14045. Rx919/zZZ+3rZ6PaYU9sTWDtWjfNwMKFbrbN2jrTZmWQkOBG9zRu7Eb7bNvm7nlNXbHMqJGY4a/u
  14046. LFzojP7mza5dv3//eCuq+YjAn/8MjRrB/7d3/jFSVVcc/5z96bprpAayrFQEyapAU1ZcAYmYVbrF
  14047. CgnVWMUaI62JbaLYRmvUrUlJlEhMq21qg0WrofUHMbFUUlGjxvUH/oJFlGVXlCBYgQXBUFh+uDsz
  14048. p3+ct+6w7I+3dHbeG+Z8kpN58967M9+5eXPevfede+6tt8LMmZbkbcSIqJU5Tih8gDKXeeklmDbN
  14049. xpvfeMOdfrZZsMDmR6xbB1OnQktL1IocJxTu+HMRVXjwQZg921IJr1kDkycPWMwZAq66ym66hw7B
  14050. 9OnW63KcmOOOP9c4cMDi8m+/3SJ4Vq+G0aOjVpXfTJkC779vN+HZs+GeeyCZjFqV4/SJO/5cYt06
  14051. a9kvXw733QfPPgvl5VGrcsCWbXz3XbjxRovxr6+HtraoVTlOr7jjzwWSSZs9Om2aTdBqbLT1cj2G
  14052. PF6UlcFjj8ETT9hNYOJEuzk7TsxwzxF3mptt7PiOO2xxkPXrYcaMqFU5/TF/vvXOxo2z0NprrrHF
  14053. XRwnJrjjjysHD1rI4OTJsGWLxYqvWGFLBDrxZ/x4eOcdG/ZZsQLOPhuWLPGxfycWuOOPG6kUlS+/
  14054. bI7i3nttfdyWFpg3z3PD5BpFRdDQAB9+CDU1tsB9ba1FATlOhLjjjwuplC35d/75jF+8GEaNsoid
  14055. J5/0iUG5zsSJ8Nprtrj9nj1QV2cPf997L2plTp7ijj9qOjrg6adh0iTLqtneTmtDgzmF6dOjVudk
  14056. ChHrvX36qSV3++gjuPBCmDWL0z74wPP8O1nFHX9UfPGFLfIxejRcdx0kEta6b21lV329R+ycqJSV
  14057. wW232XOb+++HDRv4/p13Wq/g4Yct9YbjDDHuXbLJ3r2WLrmuzib7LFoEF1wAL74IGzfaDcAzPeYH
  14058. FRVw112wdSstDQ02H2PBAqiqgiuvhOeeg/b2qFU6JyjuZYaSVAo+/tgc+6pVFuWRSsE558DChXD9
  14059. 9TB2bNQqnSgpKWF3fT0TFi2y4Z9ly+CppywSqLTU8i/NmQOXXgrV1f6A38kI7vgzyVdfWQRHU5Pl
  14060. xV+92hbrBgvLvPtuG8evqfE/sHMskyZZDqYHHoC33oLnnzd74QU7fvrpcPHFliKithbOO896Do4z
  14061. SEI5fhG5DPgTtubuY6q6uMdxCY5fjq25O19V14Upm3Ps3w/btpl9/jls2mTW2grbt3efN368Pcyb
  14062. McNabVVV0Wl2couiIrjkErOHHoLNm+H1183efttSdoA1HsaMgQkTzMaNsx7k2LEWFXbyyZH+DCe+
  14063. DOj4RaQQ+AtQD3wJrBGRlaqanoP2R0B1YFOBJcDUkGWHDlWbMJNIQGcndHRQsmePOewjR8wOHTI7
  14064. eNDGVPfvt1b6vn02Jr93r4XgtbXBzp12XjqnnALnnmtd8UmTrGVfU2O52h3n/0XEhniqq7uX0mxr
  14065. g7VrbXZwS4vZK69YhFg6w4ZZL2HEiG4bNszs1FPt2q2oMCsr67bS0m4rKYHiYhuidE4YwrT4pwCb
  14066. g4XTEZHlwFwg3XnPBf4eLLr+nogME5EqYEyIspmjstKyVyaT3daD0AGSJSU2S7bLamth5EhruZ95
  14067. ptmYMfadPmzjZJORI23cf86c7n2plK3EtmWLNWx27LAe6I4d1nBpbrbXffusITRI6sCu88LCo62g
  14068. oPu1oMDOGci6PquLMNshmHr4sN24jrN8NpjSU2NPhg+3PE9DTBjHPwr4T9r7L7FW/UDnjApZFgAR
  14069. uQm4CaCyspLGxsYQ0o7mrJkz7Q9QUIAWFKCFhd9aqrgYLSricDJJSUUFqdJSUiUlJEtKSJWVkTzp
  14070. JJJlZSTKy0mWl5MqLu7/wjlyxFa/+uSTQesciPb29uP6/dnENWaOjOvsapj0hioFR45Q1N5O4eHD
  14071. 3dbRQcE335h1dlLQ2Yl0dFCQTCKJBJ2HDlFaWIikUkgyiaRSkErZ+1TKeteq3duABPuOeh9oSNfT
  14072. G3Ic8xo6EwmKu6LiYjovIpFIcKCfyL1EeTmfZeGajc3DXVVdCiwFqK2t1bq6usF/SIgyjY2NHNdn
  14073. ZxHXmBlyQSPkhk7XmBnCaByVBR1hHP924Iy0998N9oU5pzhEWcdxHCeLhHH8a4BqERmLOe15wE97
  14074. nLMSuCUYw58K/FdVd4rIVyHKHkNTU9MeEdk2iN8xGIYDcc+R6xozQy5ohNzQ6Rozw1Bq7GN871gG
  14075. dPyqmhCRW4CXsZDMx1V1o4j8Mjj+CLAKC+XcjIVz/qy/siG+c8iykonIWlWtHarPzwSuMTPkgkbI
  14076. DZ2uMTPERWOoMX5VXYU59/R9j6RtK3Bz2LKO4zhOdHiuHsdxnDwjHx3/0qgFhMA1ZoZc0Ai5odM1
  14077. ZoZYaBSNabyr4ziOMzTkY4vfcRwnr3HH7ziOk2fkjeMXkZ+IyEYRSYlIbY9jd4vIZhHZJCKzotKY
  14078. jogsFJHtIrI+sMuj1tSFiFwW1NVmEbkraj29ISJbRWRDUHdro9YDICKPi8huEWlO23eaiLwiIp8F
  14079. r5Fm9+tDY6yuRRE5Q0ReF5GW4D/9q2B/bOqyH42xqMu8GeMXkfFACvgr8BtVXRvsnwA8gyWjOx14
  14080. FThbVY/N8JZFRGQh0K6qv49SR0+CjKufkpZxFbg2axlXQyIiW4FaVY3NhB4RuRhoxxIafi/Y9wDw
  14081. taouDm6i31HVO2OmcSExuhaDBJBVqrpORE4BmoAfA/OJSV32o/FqYlCXedPiV9VWVd3Uy6G5wHJV
  14082. /UZVP8cmoU3Jrrqc4ttsraraAXRlXHUGQFXfBL7usXsusCzYXoY5h8joQ2OsUNWdXet9qOoBoBVL
  14083. cRObuuxHYyzIG8ffD31lFo0DC0Tk46D7HZcE/3Gur3QUeFVEmoLMr3GlUlV3BtttQGWUYvohjtci
  14084. IjIGOA94n5jWZQ+NEIO6PKEcv4i8KiLNvVgsW6QD6F0CnAXUADuBP0QqNve4SFVrsEWCbg6GMGJN
  14085. MAM+jmOvsbwWRaQCeA74taruTz8Wl7rsRWMs6jI2aZkzgar+4DiKhck+OiSE1SsijwL/HmI5YYms
  14086. vgaDqm4PXneLyApsiOrNaFX1yi4RqQqSGlYBu6MW1BNV3dW1HZdrUUSKMYf6lKr+M9gdq7rsTWNc
  14087. 6vKEavEfJyuBeSJSGmQRrQY+iFhT18OhLq4Amvs6N8t8m61VREqwjKsrI9Z0FCJSHjxQQ0TKgR8S
  14088. n/rryUrghmD7BuD5CLX0StyuRRER4G9Aq6o+mHYoNnXZl8a41GU+RfVcAfwZGAHsA9ar6qzg2G+B
  14089. nwMJrEv2YmRCA0TkH1h3UIGtwC/Sxi8jJQhB+yPdGVcXRSzpKETkLGBF8LYIeDoOGkXkGWwVw+HA
  14090. LuB3wL+AZ4HRwDbgalWN7OFqHxrriNG1KCIXAW8BG7BIPYAGbAw9FnXZj8ZriUFd5o3jdxzHcQwf
  14091. 6nEcx8kz3PE7juPkGe74Hcdx8gx3/I7jOHmGO37HcZw8wx2/4zhOnuGO33EcJ8/4Hzxkq2E0PmjK
  14092. AAAAAElFTkSuQmCC
  14093. "
  14094. >
  14095. </div>
  14096. </div>
  14097. <div class="output_area"><div class="prompt"></div>
  14098. <div class="output_png output_subarea ">
  14099. <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAX4AAAEICAYAAABYoZ8gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
  14100. AAALEgAACxIB0t1+/AAAIABJREFUeJztnXl8FdX5/99PFkhIwhqKbIIUFNG6QcFdbKmCVfGriFbc
  14101. bSmtbalLW/uzrdqvttZWv9VqVbRVcQXXosW9RERFBaXKUhQRyhbZAwEChDy/P865MFzvMknukuQ+
  14102. 79drXnfunO1z5s79zJlzzsyIqmIYhmHkDnnZFmAYhmFkFjN+wzCMHMOM3zAMI8cw4zcMw8gxzPgN
  14103. wzByDDN+wzCMHMOM32iSiEgXEZkuIptF5NZs60knInK9iDySIHyeiAyNEzZURJYnSPugiNyYAplG
  14104. C8KMPwOIyHkiMktEqkVklYi8KCLH+rCYf3oRURHpG/g+QESmiEiVN8NpInJ0VJpWPr9PRWSLiCwR
  14105. kb+LSO9AnFNF5D0fvk5EHhWRHoHwi0VkRpL6PCgitSLSNbDtHl+/ahHZISI7A99fFJHevk7VUcs5
  14106. cYoZC6wF2qrqVQl3cBKyYX7+91kjIptE5N8iMrKheanqQapakUJ5aSX62A0Rv0JEvpuisieLyEki
  14107. 0lpEKqPCWvv/wyYRqRSRK1NRZnPEjD/N+IPrz8DvgC7AvsBdwOn1yOOrwFvAx8B+QDfgWeAVETkq
  14108. EPUpn+95QDvgUGAW8E2fzyjgMa+nHDgI2A7MEJEOIbWUAGcBVcD5ke2qOk5VS1W11Nd1UuS7qo4I
  14109. ZNE+sL1UVSfFKaoXMF+bwB2GIlLQgGQ/BXqoalvcSeyR4InSSBsDccf8IcDcqLDrgX64Y+tE4Oci
  14110. Mjyj6poKqmpLmhac+VYDZyeIcz3wSIztCvT16w8DU2PEuRuY7teHAduAnnHKEWAp8POo7Xm4P8hv
  14111. /feLgRkJ9F4ILAPGA3PD1gno7etUEGK/PQjsBHb4/TfM67wG+AxYB0wGOgbSPAlU4k5I04GD/Pax
  14112. UXk9H71/A2Xe6NeHAsuBX/g8H/bbTwXmABuBt4FDQh4Hg4EaYHCC/TUZmAhsBuYBgwLhS4Bhfr3Y
  14113. a90AzAd+BiwPxD0c+MDnMwl4IlKvZHXw5VwNfOT34ySgKI7mvsAbPt5a3Ikev+8V2OL39zlAB+AF
  14114. YI3X/QLupAhwE7DL759q4E6/vT/wKrAeWAiMDrGfOwCL/foPgFuiwlcCJwW+/xZ4ItO+0BSWrAto
  14115. yQswHKglgdkRzvgrgUtixDnR/2mKgZuBNxKU09/nuV+MsBuAd/z6xSQ2/teBW3BXL7XAwDB1oh7G
  14116. 7+M/GGVY44GZQA+gNXAv8Hgg/FKgzIf9GZgTL6/o/RsdB2f8tcAffH7FOENdDQwB8oGLcEbZOkEd
  14117. XvCGpsBLQF6CY6AGOMXn/XtgZiB8CXuM/2bgTaAj0BN30l7uw1rhTu5XAIXAKNxJL1KvhHXw6+/h
  14118. rig7AguAcXE0Pw5cizshFwHHJti3nXBXiW38b/Qk8FwgvAL4buB7Ca5xcQlQ4HWvBQbE0fJN3Ims
  14119. GneC3+g/t/j1E3AnBQW6BNKdBXycTY/I1mJdPemlE7BWVWuTxBstIhuDS1R4ObAqRrpVuD9eR19W
  14120. rDjBPIgTZ1UgPC4isi/uZPOYqn6BOwlcmCxdFGuj6npgyHTjgGtVdbmqbseZ5ahIN4yq/l1VNwfC
  14121. DhWRdvXUFqQOuE5Vt6vqNtyVw72q+q6q7lLVh3DdZEfGy0BVT8UZ3SnAK6pal6C8Gao6VVV34a7w
  14122. Do0TbzRwk6quV9VlwB2BsCNxhv9nVd2pqk8B7wfCw9ThDlVdqarrgeeBw+Lo2InrMummqjWqGndc
  14123. SFXXqerTqrpVVTfjWvknxIuPuypZoqoPqGqtqn4IPA2cHSf/11W1PfCcj9MddxIrV9X2qvoGUOqj
  14124. VwWSbsL9PjmHGX96WQeUh+gjnuwP0N1LVPhaIFb/cFecQW3wZSXqQ14bSBMrn7UxtkdzAbBAVef4
  14125. 748C54lIYYi0Ecqj6rogZLpewLOBE+MC3NVOFxHJF5GbReQzEdmE+9NDiJNZAtaoak1U+VdFnZx7
  14126. 4lrHcfEG/CJwkogkGtcJDkRuBYriHDfdcK3hCEujwlaob87GCA9Th2gdpcTm57juw/f8rKNL48RD
  14127. RNqIyL0istT/PtOB9iKSHydJL2BIlM4xwD5x8l/u43wHeAh3VdMLWCUit/lo1f6zbSBpO1yXWM5h
  14128. xp9e3sG1qM5oZD6vEbu1MxrXRbPVxxkcnKETxUJcv/Ve+YhIHu6S9/UQOi4E+vgZEZXAbThzPSVU
  14129. LRrHMmBE1EmjSFVX4AazR+LGAtrhupXAGRO4S/xotuK6HiJEm0p0mmW4lnaw/Daq+nhI/QXAV0PG
  14130. TcQqnFlH2DcqrLuISJzwxtZhN6paqarfU9VuwPeBvyaYyXMVcAAwRN1g9/F+e7zfZxmu2zKos1RV
  14131. fxBHSw9ct+prvtE0Abjcp7vSx9mA2z/BK6lDceMpOYcZfxpR1SrgN8BdInKGb/kUisgIEbmlHlnd
  14132. ABwtIjeJSEcRKRORH+OM+Be+rNdwg2HPishAESnw8caJyKW+FXg18Ctx00uLRGQf4H5cK+j/AuWJ
  14133. Dw8uR+GMazDu8v8w4GDcLKH6dvc0hHuAm0SklxfYOTBFsgx3gl2HM/PfRaX9AugTtW0O7mol38/s
  14134. SNT1AHAfME5EhoijRES+LSJf6ioQkf7+Ny72v/f5OLN7ox71jcdk4Jci0sGf5H8cCHsHNzbxE1/u
  14135. mbjfq951SIaInB1oZGzAmXekKyt6f5fhJh5sFJGOwHVR2UXHfwHYX0Qu8PUoFJGvJ+kWHIgb1AY4
  14136. AjezJ5qJuOO/g8/re7ixnZzDjD/NqOqtwJXAr3CzGpYBP8L1R4bN41PgWFwLZQmu5XIWcLKqvhWI
  14137. OgqYipuNUYUb+BuEuxpA3dTJC3CDf+tws0KKgWNUdV0gn6Nxf9TgchnwD1X92Lf2KlW1ErgdONX/
  14138. ocOwUfaexx92LvXtwBTcFNbNuIHeIT5sIq5LY4Wv08yotH8DBvhug8h+Hw+chhv8G0OS30NVZ+GM
  14139. 4k6c0S3CDYTHQnDjDKtxv/l44BxV/SBO/PpwA66unwOv4MYDIhp3AGd6XetxM2qeaWAdkvF14F0R
  14140. qcb9LuNVdbEPux54yO/v0bjB9mJcd+JM3EB3kNtx4zUbROQOPw5wEnAubiZOJXsG2uMxEPjAX+30
  14141. J3ZL/jrcrLCluAHlW1Q1WktOIHt3BxqGYRgtHWvxG4Zh5Bhm/IZhGDmGGb9hGEaOYcZvGIaRYzTk
  14142. 4VNpp7y8XHv37p1tGbvZsmULJSUl2ZbRIEx7djDtmae56obUaJ89e/ZaVe0cJm6TNP7evXsza1as
  14143. abjZoaKigqFDh2ZbRoMw7dnBtGee5qobUqNdRJYmj+VoksZvGC2VT16AnVvhqydDUWOeJGQYjcCM
  14144. 3zAyxL8nwnMXufW8Atj3ODj2GvjqSdnVZeQeNrhrGBlg4RT4x6Ww3zfh4jfgqKth4+fw5NmweWW2
  14145. 1Rm5hhm/YaSZJW/Ak6Oh6xFwzrPQ63gY9nu44FWo3Q4vX5FthUauYcZvGGlkRzVMPhM69IExL0Lr
  14146. wOPQOvaF466FeZNhUU4+McbIFmb8hpFGPnwAtq2H0/8GbTp9OfyYn0OnA+CfP3SDvoaRCcz4DSNN
  14147. 1O2Cd/8MPY6CnkfFjlPQGk691/X3T78xs/qM3MWM3zDSxH+egw2L4airEsfrfQIcdA68f5e1+o3M
  14148. YMZvGGninVtd337/EO9fG/QD2L4J5j+Vfl2GYcZvGGmgal5blr8DQ34KefHeLBug1/FusPfDv6Vf
  14149. m2GY8RtGGlg+uSdF7eHwS8LFF4HDLoWl02Hdp+nVZhhm/IaRYqorYe2McgZ+H1qVhk932EUgeTDn
  14150. gfRpMwww4zeMlDP/KaBOOLSer6Av6wb9ToE5D0JdbTqUGYbDjN8wUszcJ6CkTzWdB9Q/7eGXQfUq
  14151. u6HLSC9m/IaRQqqWwbK3oPOJqxuUvt+3oeQrNshrpBczfsNIIfOfdJ9fOXFNg9LnF8LXxsCnU6Gm
  14152. KoXCDCOAGb9hpJC5T0DXgVDcfVuD8xgwCnbtcM/uN4x0YMZvGCliw2JY+b67C7cx9DjSDfQueDo1
  14153. ugwjGjN+w0gRcye5z4NGNy4fyYP+Z8KiF93TPQ0j1ZjxG0aKmDfJPZCtfa/G5zXgLKitgU9fbHxe
  14154. hhGNGb9hpIB1n8AX/258N0+EfY+DNp2tu8dID6GMX0SGi8hCEVkkItfECBcRucOHfyQiR/jtPUVk
  14155. mojMF5F5IjI+1RUwjKbAgmfc54Fnpia/vHzo/z/w6T9hZ8PHiQ0jJkmNX0TygbuAEcAA4DsiEn1r
  14156. ygign1/GAnf77bXAVao6ADgSuDxGWsNo9ix4BroPhnY9U5fngLNcH/9nr6QuT8OAcC3+wcAiVV2s
  14157. qjuAJ4CRUXFGAhPVMRNoLyJdVXWVqn4AoKqbgQVA9xTqN4ysU/VfN5unf4pa+xF6nwhFHay7x0g9
  14158. BSHidAeWBb4vB4aEiNMdWBXZICK9gcOBd2MVIiJjcVcLdOnShYqKihDSMkN1dXWT0lMfTHv6Wf50
  14159. d6Afm7q9S0WF65dJlfZ2Qw5g3jOdaXfBW+QVaqPzC0Nz2e/RNFfdkHntYYy/0YhIKfA08FNV3RQr
  14160. jqpOACYADBo0SIcOHZoJaaGoqKigKempD6Y9/Tx4PXzlYDjlgj3toVRp77YFHn8JetaeQL9vNTq7
  14161. UDSX/R5Nc9UNmdcepqtnBRDsuezht4WKIyKFONN/VFWfabhUw2h6bFkN/30z9d08EfoMg9Zt7c1c
  14162. RmoJY/zvA/1EZD8RaQWcC0yJijMFuNDP7jkSqFLVVSIiwN+ABap6W0qVG0YTYOEU0LrUzeaJpqA1
  14163. 7H8aLHwOdu1MTxlG7pHU+FW1FvgR8DJucHayqs4TkXEiMs5HmwosBhYB9wE/9NuPAS4AviEic/xy
  14164. SqorYRjZYsEz7r26XQ5JXxkDRsG29bD0jfSVYeQWofr4VXUqztyD2+4JrCtweYx0MwBppEbDaJLU
  14165. VMHi12DIePfqxHTx1ZOhsMR19/QZlr5yjNzB7tw1jAbyn2ehbqebb59OCoth/2/78naltywjNzDj
  14166. N4wGMvdxaL8fdI+e3JwGDhzlB5JnpL8so+Vjxm8YDWDLalj8Ohz8nfR280ToNwIKimx2j5EazPgN
  14167. owHMexJ0F3ztO5kpr1Up9B3h7uK17h6jsZjxG0YDmPu4u2nrKwdnrsyDznEvYl8yLXNlGi0TM37D
  14168. qCcbl7oXqh+codZ+hP4joXU7mPNgZss1Wh5m/IZRT+Y+4T4zbfwFRa7MBc/Yi9iNxmHGbxj1ZO7j
  14169. 7r24HfbLfNmHXQy122D+k5kv22g5mPEbRj1YPc+9aSvTrf0I3QdDeX/490PZKd9oGZjxG0Y9mHU3
  14170. 5LfOnvGLwKEXu/n86xdlR4PR/DHjN4yQ1FS5gdWDz4WSztnTccj5IHkwx1r9RgMx4zeMkMx5EHZu
  14171. gcE/zq6Ott3hqye57h6b0280BDN+wwiB1sH7d0KPo6DbwGyrgcO/C5uW7XnJu2HUBzN+wwjBopdd
  14172. n3q2W/sR+p8BnQ6AN28CzcwbGY0WhBm/YYTgvb9A6T7pfxJnWPLy4dhr3AyjT6cmj28YQcz4DSMJ
  14173. axfCohdh4DjIb5VtNXv42hho18ta/Ub9MeM3jCS8fo17EcqgccnjZpL8Qjjm57D8HXs7l1E/zPgN
  14174. IwGLX4P/PAfHXQulXbKt5sscfqnrgnrzpmwrMZoTZvyGEYe6Wnjpp+6dukddkW01sSkogqOucieo
  14175. RS9lW43RXDDjN4w4zLoH1syDk251BttUGfwj6HwQTLkMtm3IthqjOWDGbxgx2LoOpv3Gvdz8gJHZ
  14176. VpOYgiI44yH3VrCXfpJtNUZzwIzfMKLYtROePhd2bIaT/y8zr1ZsLN0GwnG/go8esZu6jOSY8RtG
  14177. AFV44fuuz/y0+zL7hq3Gctz/g65HOP0bl2ZbjdGUMeM3jABv3gRzHoDjf+Oefd+cyC+E/3nYXbE8
  14178. cBys+yTbioymihm/YeAedjbjZpj2azjkAhh6fbYVNYzOA+DiCqitceb/xUfZVmQ0Rcz4jZyn6r/w
  14179. 8DB4/ZcwYJTr4mkO/frx2OcwuORNd5fxgye4fn+ty7YqoykRyvhFZLiILBSRRSJyTYxwEZE7fPhH
  14180. InJE2LSGkS22rIa3boG7D4GVs+D0v8OoyVDQOtvKGk/5AXDJDOjYF569AO77Onw+LduqjKZCQbII
  14181. IpIP3AV8C1gOvC8iU1R1fiDaCKCfX4YAdwNDQqY1jIygda7fe+Usdzfuwn+4m7T2+wacOgE6fjXb
  14182. ClNL+17w3Xfh48fd1czEb7gneu5/Kux/GnQbBK1Ksq3SyAZJjR8YDCxS1cUAIvIEMBIImvdIYKKq
  14183. KjBTRNqLSFegd4i0KWPek6BpeDHF6vlfYW5l6vPNBM1d+8erAhv8g8hU3Xrws67WLztd//aOLbBz
  14184. K2xbD9Wr3LLuUzdFE6C4Ewz+CRxxmesXb6lIHhwyBg48071IZuFz8O4d8M6tLrysO3Ta3z32oagD
  14185. FHeA5av35Z0P3f0B+YUuD8n33V8S9bm7oMBqlrrJmvuxPrfS7fP+Z6S/vDDG3x1YFvi+HNeqTxan
  14186. e8i0AIjIWGAsQJcuXaioqAghbW/evPA46mry650uOQNYkIZcM0PuapfCOgrLdtKq0w5addxB+Tdr
  14187. KDtgM2UHbKbNvluRfGXeamB1qvTuobq6ukHHcFo5EHocCPuMz2fjB+3ZsqSEbcvbsH55MZULW1Fb
  14188. XUBtdQHU9eHzbGttEM3/WC/ssIOj27+d9tLCGH9GUNUJwASAQYMG6dChQ+udx8Fz2N0qTCXvvfce
  14189. gwcPTn3GGaC5al+99gtGXzacJcsXceHosfz2GtdE3d2ajGp55hVAXqH7LCiCwjaQl58HtPZLZqmo
  14190. qCDsMXz99dezaNEiHnnkkZjhBx10EHfddVfM/CoqKjj//PNZvnx5zLQXX3wxPXr04MYbb9w74JTY
  14191. WrQO/vXqdI4Zcjy1290VVN0udyUdfaW1O03wP5fFx0M312Md9miX/FZ06jc0/QWqasIFOAp4OfD9
  14192. l8Avo+LcC3wn8H0h0DVM2ljLwIEDtSkxbdq0RqV/9NFHdeDAgVpSUqL77LOPDh8+XN98801VVb3u
  14193. uut0zJgxX0oD6Keffrr7+7x58/S0007Ttm3bamlpqQ4dOlTfeuutvdJs375dr7vuOu3bt6+2adNG
  14194. e/XqpcOHD9fPP/98d5znn39ev/71r2ubNm20Y8eOet555+myZct2hz/wwAN6zDHHJKzPRRddpPn5
  14195. +bpy5crd277//e9rSUmJlpSUaGFhoRYUFOz+HtEA7N4WWZ544omYZfz2t7/V4447Tuvq6hJqCcNF
  14196. F12k1157baPzqQ+HHXaYlpeXa1lZmR5yyCH63HPPxY0b7xgIw7Rp07R79+5xwxtS98Ye79HHbjJO
  14197. OOEEve+++xpVpqrTffbZZ+vLL7+sNTU12qVLl73CJ02apEcddZQWFxfrCSec0OjyUklj97mqKjBL
  14198. k3hrZBFN8gYHESkAPgG+CawA3gfOU9V5gTjfBn6Ea0cMAe5Q1cFh0sYpcw3QlO49LAfWNjBtF2Af
  14199. XH024dpEbYEyXNdXN1yTNPrqeiAwF9juww8E1gCVPo9yXFfaJ8AWn6YvUOjL2grkA/sCm73+Drhx
  14200. l6XABh/ew2uZD+wCOvm8F8apTx5wqNewCvgiRpxYdWoFfA2YHSffaHr5uiwKGT8RvYEdwMoU5BWW
  14201. ruz5rUqA/XG/584YceMdA2EoA/YD4s3Y7039696Y4x32PnbDcACwrpFlgtO9D7AAtz974P4fEcpw
  14202. vRxFuP9gvGM8GzR2nwP0UtXOoWKGOTvgDP0T4DPgWr9tHDDOrwtu9s5nwMfAoERpm9tCPc6kUena
  14203. AdXA2QniXA88EmO7An39+sPA1Bhx7gam+/VhwDagZyzt/jdaCvw8KjwP9yf9rf9+MTAjgd4LceM2
  14204. 44G5YeuEMyAFCkLstwdxBlnn998wr/MafxytAyYDHQNpnsQZbRUwHTjIbx/r89rh83o+ev8GyrzR
  14205. rw/FnZR/4fN82G8/FZgDbATeBg4Jc8zgJkjUAIMT7K/JwETcSXpe1H9oCTDMrxd7rRtwJ+ufAcsD
  14206. cQ8HPvD5TAKeiNQrWR18OVfjGg1VPn1RHM19gTd8vLXAJL99ut+3W/z+PgfX4HgB13DZ4Nd7+Pg3
  14207. 4RocNT7+nX57f+BVYD3OoEeHOG4+BBb79R8At8SJ912gIhXekKqFBnpMg8vLdoWbw9LQHwUYDtSS
  14208. wOwIZ/yVwCUx4pzo/zTFwM3AG/G0+z+SAvvFiHMD8I5fv5jExv86cAvuSqYWGBimTtTD+H38B4GV
  14209. ge/jgZm4VlxrXPfi44HwS3EtutbAn4E5UXndGJV/MuOvBf7g8yvGGepq3BVtPnARzihbxztmvMHV
  14210. +LJeAvISHAM1uEZSPvB7YGYgfAl7jP9m4E2gI9ATd9Je7sNa4U7uV+CulkbhTnqReiWsg19/D/i3
  14211. z38BvnEXQ/PjwLW4E3IRcGyCfdsJOAto43+jJ4HnAuEVwHcD30twjYtLcC30w3EnlwFxtHwTdyLb
  14212. hTvBb/SfW/z6CVHxc9747c7d9NIJWKuqtUnijRaRjcElKrwc160SzSrcH6+jLytWnGAexImzKhAe
  14213. FxHZF3eyeUxVv8CdBC5Mli6KtVF1PTBkunG4K8blqrodZ5ajfHciqvp3Vd0cCDtURNrVU1uQOuA6
  14214. Vd2uqttwVw73quq7qrpLVR/CdWUcGS8DVT0VZ3SnAK+oJrx/doaqTlXVXbgrvEPjxBsN3KSq61V1
  14215. GXBHIOxInOH/WVV3qupTuO7VCGHqcAewU1XXA88Dh8XRsRPXHddNVWtUdUa8iqnqOlV9WlW3qupm
  14216. XCv/hHjxcVclS1T1AVWtVdUPgaeBs+Pk/7qqtseZ/Nm4LtAlQLmqtldVezFlFGb84ZjQwHTrgPKI
  14217. OSVgsj9Ady9R4WtxfcbRdMUZ1AZfVqw4Ee1rA2li5ROmf/ECYIGqzvHfHwXOE5HCEGkjlEfVNdEM
  14218. vA8D672AZwMnxgW4Fl4XEckXkZtF5DMR2YT700OIk1kC1qhqTVT5V0WdnHvi+udjMQHAG/CLwEki
  14219. cnqC8oIz0LcCRXGOm27sPUV6aVTYCvVNyBjhYepQyZ5jZitQGkfvz3Hdh++JyDwRuTROPESkjYjc
  14220. KyJL/e8zHWjvb/CMRS/cDaBBnWNw/fex8l/u43QAHsJd1fQCVonIbfF0NTEa6jENwow/BOqmmjaE
  14221. d3AtqsbekvEasVs7o3FdNFt9nMEi0iMYIaB9Ia7feq98RCQPdxn+eggdFwJ9RKRSRCqB23DmGmdy
  14222. YKMJGv8yYETUSaNIVVcA5+FuDByGG1fp7dNEJn/GmsGwFdf1ECHaVKLTLMO1tIPlt1HVx2MJj3HM
  14223. FACpuDd4Fc6sI+wbFdZdZK9bqILhoeoQ5nhX1UpV/Z6qdgO+D/xVRPrGiX4VbgB3iKq2BY732+P9
  14224. Pstw3ZZBnaWq+oM4WnrgulVf9Y2mCcDlPt2VyerSFGiExzQIM/40oqpVwG+Au0TkDN/yKRSRESJy
  14225. Sz2yugE4WkRuEpGOIlImIj/GGfEvfFmv4QbDnhWRgSJS4OONE5FLfSvwauBXInKeiBSJyD7A/bgZ
  14226. Dv8XKE98eHA5Cmdcg3GX/4cBBwOPUf/unoZwD3CTiPTyAjuLSOTdWGW4E+w6nJn/LirtF0CfqG1z
  14227. cFcr+SIynMRdDwD3AeNEZIh/NlWJiHxbRMqiI4pIf/8bF/vf+3yc2aWiy2Ey8EsR6eBP8j8OhL2D
  14228. G5v4iS/3TNzvVe86JENEzg40MjbgzDvSlRW9v8twEw82ikhH4Lqo7KLjvwDsLyIX+HoUisjXk3QL
  14229. DsQNagMcgRtjidacLyJFuJNwnj+u63O12mIw408zqnorcCXwK9yshmW4qa/P1SOPT4Fjcf2+S3At
  14230. u7OAk1X1rUDUUcBU3GyMKtzA3yDc1QCqOgnXXXMFziTn4wYuj1HVdYF8jsb9UYPLZcA/VPVj39qr
  14231. VNVK4HbgVP+HDsNGEakOLGFbZLcDU4BXRGQzbqA3chf4RFyXxgpfp5lRaf8GDPDdBpH9Ph44Ddcv
  14232. PIYkv4eqzgK+B9yJM7pFuIHwWAhunGE17jcfD5yjqh/EiV8fbsDV9XPgFdx4QETjDuBMr2s9bkbN
  14233. M4Hw+tQhGV8H3hWRatzvMl79o1lwdX/I7+/RuMH2Ylx34kzcQHeQ23HjNRtE5A4/DnAScC5uGmol
  14234. ewba4zEQ+MBf7fTHzYyK5gLcsXw3cJxfv69etW4hJJ3HbxiGYbQsrMVvGIaRY5jxG4Zh5Bhm/IZh
  14235. GDmGGb9hGEaOEeqxzH662+2427zvV9Wbo8L7Aw/gplFdq6p/Cps2FuXl5dq7d++wdUg7W7ZsoaSk
  14236. eb6qyLRnB9OeeZqrbkiN9tmzZ6/VVD2kDWfYn+Hm2bbCPcdjQFScr+Cmd90EXF2ftLGWlvZY5mxi
  14237. 2rODac88zVW3auYfyxymq2f3qxfVzROOvD4xePJYrarv8+VHziZNaxiZYB4rea+ZvlfKMFJNql69
  14238. 2Oi0koJXL6aLJvkavZCYdscHA7exvbWy9e3MvObB9nvmaa66IfPaW9SrF9NFfV6j19Qw7VDLLmbw
  14239. MnUog4ceTRtaNV5cEmy/Z57mqhsyrz1MV88K9n4oVA+/LQyNSWsYKeELNlPnnwO2huosqzGM7BPG
  14240. +N8H+onIfiLSCvf8jCkh829MWsNICSvZ83qDtWzOohLDaBok7epR1VoR+RHwMm6Wzt9VdZ6IjPPh
  14241. 9/inPM7CPeWxTkR+ipu9sylW2nRVxjBisZIq2tCKWnZZi98wCNnHr6pTcU99DG67J7BeievGCZXW
  14242. MDLJKqroRju2spM11uI3DLtz12jZ7KCWNWymG+3pTKm1+A0DM36jhVPJJhToRjs6U0o129nGjmzL
  14243. MoysYsZvtGgiA7vO+N2LpqzVb+Q6ZvxGi2YlVbSliFKK6OzfG27Gb+Q6ZvxGi2YlVXSlHQDtKKaQ
  14244. fBvgNXJx91ekAAAfMElEQVQeM36jxVLDTtazhW7e+AWxAV7DwIzfaMGsogqAbrTfva0zZdbiN3Ie
  14245. M36jxbLSG3+kqwcIzOyJfpCsYeQOZvxGi2UlG+lAm70eyla+e4DXWv1G7mLGb7RY1rFl90yeCF/x
  14246. UzrXWj+/kcOY8Rstlk1sox3Fe22zmT2GYcZvtFC2U0sNtbSNMn6b2WMYZvxGC2UT2wBoS9GXwsop
  14247. ta4eI6cx4zdaJFXUAHypxQ/QnjZsooZd1GValmE0Ccz4jRZJpMXfLkaLP9Lvv8mfHAwj1zDjN1ok
  14248. EVMvS2D8Vf7kYBi5hhm/0SKpYhtltCY/xiEeuQrYZMZv5Chm/EaLZBPbYvbvw55+f2vxG7mKGb/R
  14249. ItlETcwZPQCF5FNCKzN+I2cx4zdaHIpSlaDFD66fv8oGd40cJZTxi8hwEVkoIotE5JoY4SIid/jw
  14250. j0TkiEDYEhH5WETmiMisVIo3jFhsYye11H3prt0gbSm2Fr+RsxQkiyAi+cBdwLeA5cD7IjJFVecH
  14251. oo0A+vllCHC3/4xwoqquTZlqw0hAVYKpnBHaUcxnrEFRBMmUNMNoEoRp8Q8GFqnqYlXdATwBjIyK
  14252. MxKYqI6ZQHsR6ZpirYYRik0Jbt6K0I5idrLLHs9s5CRJW/xAd2BZ4Pty9m7Nx4vTHVgFKPCaiOwC
  14253. 7lXVCbEKEZGxwFiALl26UFFREUZ/Rqiurm5SeupDLmpf2W0n7A9z3/6AT3fEbtusLa+Fg+Ffs96k
  14254. tDq/kUq/TC7u92zTXHVD5rWHMf7GcqyqrhCRrwCvish/VHV6dCR/QpgAMGjQIB06dGgGpIWjoqKC
  14255. pqSnPuSi9tf4D4tZzElHnxi3G2clVcxnBn0HHUR/9mmk0i+Ti/s92zRX3ZB57WG6elYAPQPfe/ht
  14256. oeKoauRzNfAsruvIMNKGm8NflLDvPtL/bwO8Ri4SxvjfB/qJyH4i0go4F5gSFWcKcKGf3XMkUKWq
  14257. q0SkRETKAESkBDgJmJtC/YbxJZJN5QRoQysKyDPjN3KSpF09qlorIj8CXgbygb+r6jwRGefD7wGm
  14258. AqcAi4CtwCU+eRfgWRGJlPWYqr6U8loYRoBN1LAvHRLGEcTP5TfjN3KPUH38qjoVZ+7BbfcE1hW4
  14259. PEa6xcChjdRoGKGpQ9lMTdIWP9hNXEbuYnfuGi2KLWynDo37uIYg7Si2B7UZOYkZv9Gi2HPzVvIW
  14260. f1uKqWY7texKtyzDaFKY8RstijA3b0Voby9kMXIUM36jRRHmcQ0R2tqUTiNHMeM3WhSbqKGQfIoo
  14261. TBrX3sRl5Cpm/EaLIszNWxGsxW/kKmb8Rouiim2hBnYBCsinlNZm/EbOYcZvtBh2UcdqNlNOaeg0
  14262. NpffyEXM+I0WQyWbqKWOfekYOo3dvWvkImb8Rovhv6wHoGeSxzUEae+N3+byG7mEGb/RYljGejrQ
  14263. hrIQUzkj7EtHdlHHf9mQRmWG0bQw4zdaBIryXzbUq7UP0JtO5CEsZk2alBlG08OM32gRrGcLW9lR
  14264. r/59gFYU0JMOLMZeCW3kDmb8Rosg0lVTX+MH+CqdqWQT1WxPtSzDaJKY8RstgmWsp5hCOlFS77R9
  14265. 6AzA59bqN3IEM36jRfBfNrAvHUPdsRtNV9pSTKF19xg5gxm/0eypZjvr2VLvgd0IgtCHcj5jDYqm
  14266. WJ1hND3M+I1mzzI/f78h/fsR+tCZarazhupUyTKMJosZv9Hs+S8bKCCPrrRrcB59KAfgM5vWaeQA
  14267. ZvxGs6aOOj5nLd1pT34jDud2FFNOqfXzGzlBqH+KiAwXkYUiskhErokRLiJyhw//SESOCJvWMBrK
  14268. TnYxidmsZjOH0L3R+fWhnCWs4xO+SIE6w2i6JDV+EckH7gJGAAOA74jIgKhoI4B+fhkL3F2PtIZR
  14269. b7ayg4nMZBGrOYWDOZx9G53nUfShnBKeYBZT+Zid9vweo4VSECLOYGCRqi4GEJEngJHA/ECckcBE
  14270. VVVgpoi0F5GuQO8QaVPGi8xlF3Upz3fl/tup5qOU55sJmrv2zV67+vk229hJNdvZwBZ2sIuzGUh/
  14271. 9klJee0o5jKO4V8sZCaf8wmr6UgJRRRSRMFeU0WTTRpt7vu9OWpvrrphj/ZWFHAS6W8bhzH+7sCy
  14272. wPflwJAQcbqHTAuAiIzFXS3QpUsXKioqQkjbm4+HbKUuDaMW2rGO9duXpz7jDNCitCsU1gqtdghl
  14273. O4RuK1tRuek/VPKflJbbCvha+yJW9tjJ+sIN1BYotfkkd/tE2psRzVV7c9UNe7QX7hRazVqdgQJV
  14274. Ey7AKOD+wPcLgDuj4rwAHBv4/jowKEzaWMvAgQO1KTFt2rRsS2gwzVV7ZWWlHnLIIVpaWqpXXnll
  14275. tuXUm/rs9+uuu07HjBkTN3zAgAFx85s2bZp27949btqLLrpIr7322tBaInk2R5qrbtXUaAdmaRJv
  14276. jSxh2scrgJ6B7z38tjBxwqRt8Tz22GMMGjSI0tJSunbtyogRI5gxYwYA119/Peeff/6X0ogIixYt
  14277. 2v19/vz5nH766bRr146ysjJOPPFE3n777b3S7Nixg+uvv55+/fpRUlJC7969+cMf/sCSJUt2x3nh
  14278. hRcYPHgwJSUldOrUiTFjxrB8+Z5W0oMPPsixxx6bsD4XX3wxBQUFrFq1ave2cePGUVpaSmlpKa1a
  14279. taKwsHD39xEjRrBkyRJEZPe2yDJp0qSYZUyYMIF27dqxadMmbr311oR6knHxxRfzq1/9qlF51Jcr
  14280. rriCzp0707ZtWw499FD+8Y9/NDivefPmMXTo0NSJSzPRx24yhg4dyv3335+SskePHs0rr7zC9u3b
  14281. 2WefvbsAr776avr160dZWRn9+/dn4sSJKSmzOSLuRJEggkgB8AnwTZxpvw+cp6rzAnG+DfwIOAXX
  14282. lXOHqg4OkzZOmWuApQ2tVBoohwbP8+sC7IOrzyZAgbZAGa7rqxvQGvg8Kt1AYC6w3YcfCKwBKn0e
  14283. 5biutE+ALT5NX6DQl7UVyAf2BTZ7/R1w4y5LgQ0+vIfXMh/YBXTyeS+MU5884FCvYRXEnAITq06t
  14284. gK8Bs+PkG00vX5fwDhKf3sAOYGUK8gpLV/b8ViXA/rjfc2eMuPGOgTCUAftB3M7t3tS/7o053mHv
  14285. YzcMBwDrGlkmON37AAtw+7MH7v8RoRuwHqjB/Sb9gE/Z8//JJo3d5wC9VLVzqJhhLgtwhv4J8Blw
  14286. rd82Dhjn1wU3e+cz4GNgUKK0zW2hHpdQUenaAdXA2QniXA88EmO7An39+sPA1Bhx7gam+/VhwDag
  14287. Zyzt/jdaCvw8KjwP9yf9rf9+MTAjgd4LceM244G5YeuEMyAFCkLstwdxBlnn998wr/MafxytAyYD
  14288. HQNpnsQZbRUwHTjIbx/r89rh83o+ev8GyrzRrw/FnZR/4fN82G8/FZgDbATeBg4Jc8zgJkjUAIMT
  14289. 7K/JwETcSXpe1H9oCTDMrxd7rRtwJ+ufAcsDcQ8HPvD5TAKeiNQrWR18OVfjGg1VPn1RHM19gTd8
  14290. vLXAJL99ut+3W/z+PgfX4HgB13DZ4Nd7+Pg34RocNT7+nX57f+BVnFEvBEaHOG4+BBb79R8AtySJ
  14291. PwW4qjHekKqFBnpMg8vLdoWbw9LQHwUYDtSSwOwIZ/yVwCUx4pzo/zTFwM3AG/G0+z+SAvvFiHMD
  14292. 8I5fv5jExv86cAvuSqYWGBimTtTD+H38B4GVge/jgZm4Vlxr4F7g8UD4pbjWb2vgz8CcqLxujMo/
  14293. mfHXAn/w+RXjDHU17oo2H7gIZ5St4x0z3uBqfFkvAXkJjoEaXCMpH/g9MDMQvoQ9xn8z8CbQEdeN
  14294. Ohdv/LirqqXAFbirpVG4k16kXgnr4NffA/7t81+Ab9zF0Pw4cC3uhFzE3mN80fu2E3AW0Mb/Rk8C
  14295. zwXCK4DvBr6X4BoXl+AmoByOO7kMiKPlm7gT2S7cCX6j/9zi10+IkaYYd8U6PBUe0diFDBu/3bmb
  14296. XjoBa1W1Nkm80SKyMbhEhZfjDtJoVuH+eB19WbHiBPMgTpxVgfC4iMi+uJPNY6r6Be4kcGGydFGs
  14297. jarrgSHTjcNdMS5X1e04sxzluxNR1b+r6uZA2KEi0vBnOLirjetUdbuqbsNdOdyrqu+q6i5VfQjX
  14298. lXFkvAxU9VSc0Z0CvKKqieYaz1DVqaq6C3eFd2iceKOBm1R1vaouA+4IhB2JM/w/q+pOVX0K170a
  14299. IUwd7gB2qup64HngsDg6duK647qpao2qzohXMVVdp6pPq+pWVd2Ma+WfEC8+7qpkiao+oKq1qvoh
  14300. 8DRwdpz8X1fV9jiTPxvXBboEKFfV9qr6Roxk9+BOcC8n0NFiMeMPx4QGplsHlEfMKQGT/QG6e4kK
  14301. X4vrM46mK86gNviyYsWJaF8bSBMrnzD9ixcAC1R1jv/+KHCeiBSGSBuhPKquCxLE/TCw3gt4NnBi
  14302. XIBr4XURkXwRuVlEPhORTbg/PYQ4mSVgjarWRJV/VdTJuSeu3zgWEwC8Ab8InCQipycorzKwvhUo
  14303. inPcdGPvKdJLo8JWqG9CxggPU4dK9hwzW4HSOHp/jus+fE9E5onIpXHiISJtROReEVnqf5/pQHt/
  14304. g2csegFDonSOgdg3bIjIch+nA/AQ7qqmF7BKRG6LEf+PwMG47qOm8jjWhnpMgzDjD4GqNvRHeQfX
  14305. ojqjkRJeI3ZrZzSui2arjzNYRHoEIwS0L8T1W++Vj4jk4S7DXw+h40Kgj4hUikglcBvOXE+pR13q
  14306. Q9D4lwEjok4aRaq6AjgPd2PgMNy4Sm+fJjLzPtafeyuu6yFCtKlEp1mGa2kHy2+jqo/HEh7jmCkA
  14307. vhorbj1Zxd4z5faNCusuIhInPFQdwhzvqlqpqt9T1W7A94G/ikjfONGvwg3gDlHVtsDxfnu832cZ
  14308. rtsyqLNUVX8QR0sPXLfqq77RNAG43Ke7MhhXRG7APUngJFXdlKyemaIRHtMgzPjTiKpWAb8B7hKR
  14309. M3zLp1BERojILfXI6gbgaBG5SUQ6ikiZiPwYZ8S/8GW9hhsMe1ZEBopIgY83TkQu9S2bq4Ffich5
  14310. IlIkIvsA9+NmGf1foDzx4cHlKJxxDcZd/h+GazU9Rv27exrCPcBNItLLC+wsIiN9WBnuBLsOZ+a/
  14311. i0r7BdAnatsc3NVKvogMJ3HXA8B9wDgRGeKfTVUiIt8WkbLoiCLS3//Gxf73Ph9ndrG6HOrLZOCX
  14312. ItLBn+R/HAh7Bzc28RNf7pm436vedUiGiJwdaGRswJl3pCsren+X4SYebBSRjsB1UdlFx38B2F9E
  14313. LvD1KBSRryfpFhyIG9QGOAI3xhKt+Ze4RsIwVV2XtJItGDP+NKOqtwJXAr/CzWpYhpv6+lw98vgU
  14314. OBbX77sE17I7CzhZVd8KRB0FTMXNxqjCDfwNwl0NoKqTcN01V+BMcj5ukOuYqD/C0bg/anC5DPiH
  14315. qn7sW3uVqloJ3A6c6v/QYdgoItWB5crkScCXMwV4RUQ24wZ6I3eBT8R1aazwdZoZlfZvwADfbRDZ
  14316. 7+OB03D9wmNI8nuo6izge8CdOKNbhBsIj4XgxhlW437z8cA5qvpBnPj14QZcXT8HXsGNB0Q07gDO
  14317. 9LrW42bUPNPAOiTj68C7IlKN+13Gq380C67uD/n9PRo32F6M606ciRvoDnI7brxmg4jc4ccBTgLO
  14318. xU1DrWTPQHs8BgIf+Kud/riZUdH8DncFtChw/P2/+la8JZB0Hr9hGIbRsrAWv2EYRo5hxm8YhpFj
  14319. mPEbhmHkGGb8hmEYOUaY5/FnnPLycu3du3e2Zexmy5YtlJSUZFtGgzDt2cG0Z57mqhtSo3327Nlr
  14320. NeRD2pqk8ffu3ZtZs740DTdrVFRUNKvH4gYx7dnBtGee5qobUqNdREI/0di6egyjPjz4IHzlK/C7
  14321. 30FtskcwGUbTxIzfMMJQVwe//CVccgkUFcG118Lxx8Nnn2VbmWHUGzN+w0hGTQ2cfTbcfDOMHevM
  14322. /tFHYcECOPRQaELdkoYRBjN+w0jGX/4CzzwDt94K99wDhYVw3nnw0UfQpg38+tfZVmgY9cKM3zAS
  14323. sWMH3H47nHgiXHklBB982bOn2/bSS9bqN5oVZvyGkYjHH4cVK+BnP4sd/sMfQvv2cNNNmdVlGI3A
  14324. jN8w4qEKf/oTHHwwDB8eO07btjB+PDz3HHz8cWb1GUYDMeM3jHi89BLMneta+3u92ySKn/wESkvh
  14325. 97/PnDbDaARm/IYRjz/+Ebp3h3PPTRyvY0e4/HKYNAk++SQz2gyjEZjxG0YsZs+GadPgpz+FVq2S
  14326. x7/iCsjLg/vvT782w2gkZvyGEYuJE6F1a/je98LF79IFvvUtePJJNzZgGE0YM37DiKauDp5+GkaM
  14327. gHbtwqcbPRqWLLGpnUaTx4zfMKKZOdNN4Rw1qn7pRo50N3dNnpweXYaRIsz4DSOap55y/fqnnVa/
  14328. dB06wEknOeO37h6jCWPGbxhB6uqc8Z98spujX19Gj4b//pe2CxakXpthpAgzfsMI8v77sGxZ/bt5
  14329. Ipx+OrRqRedp01KryzBSiBm/YQR56inXT3/66Q1L3749nHwynd94w109GEYTxIzfMCKouumY3/qW
  14330. M/CGMno0RWvWuEFiw2iCmPEbRoTZs2Hp0oZ380Q4/XTqCgvd1YNhNEHM+A0jwjPPQH6+m5bZGNq2
  14331. ZcPhh8OUKTa7x2iSmPEbRoQpU+CEE9yzdxrJuqOPdm/q+s9/UiDMMFKLGb9hgDPpefMaPqgbxbqj
  14332. j3YrU6akJD/DSCVm/IYB8Pzz7rO+N23FYXvnznDEEWb8RpMklPGLyHARWSgii0TkmhjhIiJ3+PCP
  14333. ROQIv72niEwTkfkiMk9Exqe6AoaREqZMcS9c6dMndXmefjq88w6sXp26PA0jBSQ1fhHJB+4CRgAD
  14334. gO+IyICoaCOAfn4ZC9ztt9cCV6nqAOBI4PIYaQ0ju2zYANOnp6ybZzenn+4Gd6dOTW2+htFIwrT4
  14335. BwOLVHWxqu4AngCipz2MBCaqYybQXkS6quoqVf0AQFU3AwuA7inUbxiN58UXYdeulHXz7Oaww6BH
  14336. D+vuMZocBSHidAeWBb4vB4aEiNMdWBXZICK9gcOBd2MVIiJjcVcLdOnShYqKihDSMkN1dXWT0lMf
  14337. THtyBtx/P+07dODtrVshReVVV1dT8cYb9Bs4kH1efJG3XnmFujAvdGkCNNdjprnqhixoV9WECzAK
  14338. uD/w/QLgzqg4LwDHBr6/DgwKfC8FZgNnJitPVRk4cKA2JaZNm5ZtCQ3GtCdh+3bVtm1VL7sspdnu
  14339. 1v7SS6qg+s9/pjT/dNJcj5nmqls1NdqBWRrCX1U1VFfPCqBn4HsPvy1UHBEpBJ4GHlXVZ0KfkQwj
  14340. E0yfDps2pb5/P8LQoe5F7M89l578DaMBhDH+94F+IrKfiLQCzgWiOy2nABf62T1HAlWqukpEBPgb
  14341. sEBVb0upcsNIBc89B0VFMGxYevJv3RpOPdWVU1ubnjIMo54kNX5VrQV+BLyMG5ydrKrzRGSciIzz
  14342. 0aYCi4FFwH3AD/32Y3BdQ98QkTl+OSXVlTCMBrFrl3vF4imnQJs26Stn1ChYswbefDN9ZRhGPQgz
  14343. uIuqTsWZe3DbPYF1BS6PkW4GII3UaBjp4a23oLISzj47veWMGOFOLE89BSeemN6yDCMEdueukbs8
  14344. +aTr5jn11PSW06aNM/9nnrFn9BtNAjN+Izepq3PdPCNGuMHXdDNqlLu6ePvt9JdlGEkw4zdyk7fe
  14345. glWr0t/NE+Hb33YDvfaMfqMJYMZv5CZPPrlnxk0mKCuD4cPdVYZ19xhZxozfyD2C3TxlZZkr96yz
  14346. YPlyeO+9zJVpGDEw4zdyj7ffhpUrM9fNE+G009yL3J98MrPlGkYUZvxG7jFpkuvmSfVD2ZLRvr3r
  14347. Wnr4YdixI7NlG0YAM34jt9iyxRnvmWdmtpsnwtix7mauZ5/NfNmG4THjN3KLxx+Hqir44Q+Tx00H
  14348. J50EvXvDvfdmp3zDwIzfyCVU4a9/ha99DY45Jjsa8vLge9+DadPgk0+yo8HIecz4jdzhvffgww9d
  14349. a1+y+CSRSy6BggK4777saTByGjN+I3f461/dXbpjxmRXR9eu7jHQDz4I27dnV4uRk5jxG7nB2rVu
  14350. Ns+FF2ZnUDea73/faXrGXlFhZB4zfiM3eOAB17r+wQ+yrcQxbBj06QO33WZ38hoZx4zfaPlUVcEf
  14351. /wjf+AYcfHC21Tjy8uA3v4FZs2Dy5GyrMXIMM36j5fO//+u6Vf74x2wr2Zvzz4fDDoNrroGammyr
  14352. MXIIM36jZbNwIdx+O1x2GRxxRLbV7E1+PvzpT7B0Kdx5Z7bVGDmEGb/RsrnqKiguhhtvzLaS2Hzz
  14353. m+7VjzfeCOvWZVuNkSOY8Rstl5degn/+0/Wld+mSbTXxueUW2LwZfv3rbCsxcgQzfqNlsmKFey5O
  14354. 377wk59kW01iDjoIfvxjuPtuN7ffMNJMqJetG0azYuNG99KTjRvhjTegVatsK0rOH/8I8+a5k1Xv
  14355. 3jB0aLYVGS0Ya/EbLYuaGjjjDDeo+8wzcPjh2VYUjshz+vv2dU8Otef4GGnEjN9oOXzxhTPNN95w
  14356. XSbDhmVbUf1o396NSRQUwIknwmuvZVuR0UIx4zeaP6rwyCMwYAC8/rp7Js9552VbVcPYbz949VVo
  14357. 2xa+9S03PrF1a7ZVGS2MUMYvIsNFZKGILBKRa2KEi4jc4cM/EpEjwqY1jAZTVQUTJ7rW8QUXwAEH
  14358. wJw5TeexDA3l0EPhgw+c6f/lL9C/P1x3HSxalG1lRgsh6eCuiOQDdwHfApYD74vIFFWdH4g2Aujn
  14359. lyHA3cCQkGkNIz51dc7g1693b6765BOYPx8++gj+9S/3/J1eveCOO9zjlvPzs604NRQXuxvPRo6E
  14360. m292dx//9rcwaJC7Ee2QQ+DAA9001c6doWNH10VkGCEIc6QMBhap6mIAEXkCGAkEzXskMFFVFZgp
  14361. Iu1FpCvQO0Ta1HHIIbBtW8qzHbxtm/sjNkOahHbV+OuR76qwa9eeZft2jt+6FXbu/HJ+hYWw//7u
  14362. CZff+Q4MGZLd5+unk298wy3Ll7vurJdecoPAEyZ8OW5hIRQVuSU/f88isvcSIc56kzhmGkBz1Q0B
  14363. 7eXl8M47aS8vjPF3B5YFvi/HteqTxekeMi0AIjIWGAvQpUsXKioqQkjbmwO6dycvllE0ktraWjY3
  14364. 09ZUk9EeMBaNNmn/XfPy0Px8yMujrrCQGhEK2rShtqyMnW3bUtu2Ldu6d2dbt25opE41NW4wt4lR
  14365. XV3doGM4IUce6RZVWq9dS/GyZRRu3EhhVRWFmzaRt2PH7kV27ULq6pC6ur1PsB6JdzKmCR0z9aS5
  14366. 6oY92mtLSvg01cdNDJrMXlLVCcAEgEGDBunQhsxjTtPc54qKChqkpwlg2rODac88zVU37K29ewbK
  14367. C2P8K4Cege89/LYwcQpDpDUMwzAySBjjfx/oJyL74Uz7XCB6rtwU4Ee+D38IUKWqq0RkTYi0X2L2
  14368. 7NlrRWRpPeqRbsqBtdkW0UBMe3Yw7ZmnueqG1GjvFTZiUuNX1VoR+RHwMpAP/F1V54nIOB9+DzAV
  14369. OAVYBGwFLkmUNkSZncNWIBOIyCxVHZRtHQ3BtGcH0555mqtuyLz2UH38qjoVZ+7BbfcE1hW4PGxa
  14370. wzAMI3vYnbuGYRg5hhl/OGJMmm42mPbsYNozT3PVDRnWLho1h9cwDMNo2ViL3zAMI8cw4zcMw8gx
  14371. zPgTICLXi8gKEZnjl1MCYb/0TxxdKCInZ1NnPJrTk1FFZImIfOz38yy/raOIvCoin/rPDtnWCSAi
  14372. fxeR1SIyN7AtrtamdKzE0d4sjnMR6Ski00RkvojME5HxfnuT3vcJdGdvv6uqLXEW4Hrg6hjbBwD/
  14373. BloD+wGfAfnZ1hulMd/r6gO08noHZFtXAr1LgPKobbcA1/j1a4A/ZFun13I8cAQwN5nWpnasxNHe
  14374. LI5zoCtwhF8vAz7xGpv0vk+gO2v73Vr8DWMk8ISqblfVz3E3rg3OsqZodj9VVVV3AJEnozYnRgIP
  14375. +fWHgDOyqGU3qjodWB+1OZ7WJnWsxNEej6amfZWqfuDXNwMLcI+2adL7PoHueKRdtxl/cn7sXy7z
  14376. 98AlZLynkTYlmoPGIAq8JiKz/ZNaAbqo6iq/Xgl0yY60UMTT2lx+h2Z1nItIb+Bw4F2a0b6P0g1Z
  14377. 2u85b/wi8pqIzI2xjMS9UKYPcBiwCrg1q2JbNseq6mG4l/pcLiLHBwPVXQM3i7nHzUmrp1kd5yJS
  14378. CjwN/FRVNwXDmvK+j6E7a/u9yTyWOVuoaqg3covIfcAL/muYJ5Zmm+agcTequsJ/rhaRZ3GXtl+I
  14379. SFd1D/zrCqzOqsjExNPa5H8HVf0ist7Uj3MRKcSZ56Oq+ozf3OT3fSzd2dzvOd/iT4Q/iCL8DxCZ
  14380. CTEFOFdEWvsnj/YD3su0viTsfqqqiLTCPRl1SpY1xURESkSkLLIOnITb11OAi3y0i4B/ZEdhKOJp
  14381. bfLHSnM5zkVEgL8BC1T1tkBQk9738XRndb9nY3S+uSzAw8DHwEf+x+gaCLsWN9q+EBiRba1x9J+C
  14382. m0HwGXBttvUk0NkHN4vh38C8iFagE/A68CnwGtAx21q9rsdxl+Y7cf2vlyXS2pSOlTjam8VxDhyL
  14383. 68b5CJjjl1Oa+r5PoDtr+90e2WAYhpFjWFePYRhGjmHGbxiGkWOY8RuGYeQYZvyGYRg5hhm/YRhG
  14384. jmHGbxiGkWOY8RuGYeQY/x+hdDdSYJ2OLwAAAABJRU5ErkJggg==
  14385. "
  14386. >
  14387. </div>
  14388. </div>
  14389. </div>
  14390. </div>
  14391. </div>
  14392. <div class="cell border-box-sizing text_cell rendered">
  14393. <div class="prompt input_prompt">
  14394. </div>
  14395. <div class="inner_cell">
  14396. <div class="text_cell_render border-box-sizing rendered_html">
  14397. <h5 id="ModelSelector-class">ModelSelector class<a class="anchor-link" href="#ModelSelector-class">&#182;</a></h5><p>Review the <code>ModelSelector</code> class from the codebase found in the <code>my_model_selectors.py</code> module. It is designed to be a strategy pattern for choosing different model selectors. For the project submission in this section, subclass <code>SelectorModel</code> to implement the following model selectors. In other words, you will write your own classes/functions in the <code>my_model_selectors.py</code> module and run them from this notebook:</p>
  14398. <ul>
  14399. <li><code>SelectorCV</code>: Log likelihood with CV</li>
  14400. <li><code>SelectorBIC</code>: BIC </li>
  14401. <li><code>SelectorDIC</code>: DIC</li>
  14402. </ul>
  14403. <p>You will train each word in the training set with a range of values for the number of hidden states, and then score these alternatives with the model selector, choosing the "best" according to each strategy. The simple case of training with a constant value for <code>n_components</code> can be called using the provided <code>SelectorConstant</code> subclass as follow:</p>
  14404. </div>
  14405. </div>
  14406. </div>
  14407. <div class="cell border-box-sizing code_cell rendered">
  14408. <div class="input">
  14409. <div class="prompt input_prompt">In&nbsp;[21]:</div>
  14410. <div class="inner_cell">
  14411. <div class="input_area">
  14412. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">my_model_selectors</span> <span class="k">import</span> <span class="n">SelectorConstant</span>
  14413. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets defined in part 1</span>
  14414. <span class="n">word</span> <span class="o">=</span> <span class="s1">&#39;VEGETABLE&#39;</span> <span class="c1"># Experiment here with different words</span>
  14415. <span class="n">model</span> <span class="o">=</span> <span class="n">SelectorConstant</span><span class="p">(</span><span class="n">training</span><span class="o">.</span><span class="n">get_all_sequences</span><span class="p">(),</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_Xlengths</span><span class="p">(),</span> <span class="n">word</span><span class="p">,</span> <span class="n">n_constant</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
  14416. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of states trained in model for </span><span class="si">{}</span><span class="s2"> is </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">))</span>
  14417. </pre></div>
  14418. </div>
  14419. </div>
  14420. </div>
  14421. <div class="output_wrapper">
  14422. <div class="output">
  14423. <div class="output_area"><div class="prompt"></div>
  14424. <div class="output_subarea output_stream output_stdout output_text">
  14425. <pre>Number of states trained in model for VEGETABLE is 3
  14426. </pre>
  14427. </div>
  14428. </div>
  14429. </div>
  14430. </div>
  14431. </div>
  14432. <div class="cell border-box-sizing text_cell rendered">
  14433. <div class="prompt input_prompt">
  14434. </div>
  14435. <div class="inner_cell">
  14436. <div class="text_cell_render border-box-sizing rendered_html">
  14437. <h5 id="Cross-validation-folds">Cross-validation folds<a class="anchor-link" href="#Cross-validation-folds">&#182;</a></h5><p>If we simply score the model with the Log Likelihood calculated from the feature sequences it has been trained on, we should expect that more complex models will have higher likelihoods. However, that doesn't tell us which would have a better likelihood score on unseen data. The model will likely be overfit as complexity is added. To estimate which topology model is better using only the training data, we can compare scores using cross-validation. One technique for cross-validation is to break the training set into "folds" and rotate which fold is left out of training. The "left out" fold scored. This gives us a proxy method of finding the best model to use on "unseen data". In the following example, a set of word sequences is broken into three folds using the <a href="http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.KFold.html">scikit-learn Kfold</a> class object. When you implement <code>SelectorCV</code>, you will use this technique.</p>
  14438. </div>
  14439. </div>
  14440. </div>
  14441. <div class="cell border-box-sizing code_cell rendered">
  14442. <div class="input">
  14443. <div class="prompt input_prompt">In&nbsp;[22]:</div>
  14444. <div class="inner_cell">
  14445. <div class="input_area">
  14446. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">sklearn.model_selection</span> <span class="k">import</span> <span class="n">KFold</span>
  14447. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets</span>
  14448. <span class="n">word</span> <span class="o">=</span> <span class="s1">&#39;VEGETABLE&#39;</span> <span class="c1"># Experiment here with different words</span>
  14449. <span class="n">word_sequences</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_word_sequences</span><span class="p">(</span><span class="n">word</span><span class="p">)</span>
  14450. <span class="n">split_method</span> <span class="o">=</span> <span class="n">KFold</span><span class="p">()</span>
  14451. <span class="k">for</span> <span class="n">cv_train_idx</span><span class="p">,</span> <span class="n">cv_test_idx</span> <span class="ow">in</span> <span class="n">split_method</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">word_sequences</span><span class="p">):</span>
  14452. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Train fold indices:</span><span class="si">{}</span><span class="s2"> Test fold indices:</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">cv_train_idx</span><span class="p">,</span> <span class="n">cv_test_idx</span><span class="p">))</span> <span class="c1"># view indices of the folds</span>
  14453. </pre></div>
  14454. </div>
  14455. </div>
  14456. </div>
  14457. <div class="output_wrapper">
  14458. <div class="output">
  14459. <div class="output_area"><div class="prompt"></div>
  14460. <div class="output_subarea output_stream output_stdout output_text">
  14461. <pre>Train fold indices:[2 3 4 5] Test fold indices:[0 1]
  14462. Train fold indices:[0 1 4 5] Test fold indices:[2 3]
  14463. Train fold indices:[0 1 2 3] Test fold indices:[4 5]
  14464. </pre>
  14465. </div>
  14466. </div>
  14467. </div>
  14468. </div>
  14469. </div>
  14470. <div class="cell border-box-sizing text_cell rendered">
  14471. <div class="prompt input_prompt">
  14472. </div>
  14473. <div class="inner_cell">
  14474. <div class="text_cell_render border-box-sizing rendered_html">
  14475. <p><strong>Tip:</strong> In order to run <code>hmmlearn</code> training using the X,lengths tuples on the new folds, subsets must be combined based on the indices given for the folds. A helper utility has been provided in the <code>asl_utils</code> module named <code>combine_sequences</code> for this purpose.</p>
  14476. </div>
  14477. </div>
  14478. </div>
  14479. <div class="cell border-box-sizing text_cell rendered">
  14480. <div class="prompt input_prompt">
  14481. </div>
  14482. <div class="inner_cell">
  14483. <div class="text_cell_render border-box-sizing rendered_html">
  14484. <h5 id="Scoring-models-with-other-criterion">Scoring models with other criterion<a class="anchor-link" href="#Scoring-models-with-other-criterion">&#182;</a></h5><p>Scoring model topologies with <strong>BIC</strong> balances fit and complexity within the training set for each word. In the BIC equation, a penalty term penalizes complexity to avoid overfitting, so that it is not necessary to also use cross-validation in the selection process. There are a number of references on the internet for this criterion. These <a href="http://www2.imm.dtu.dk/courses/02433/doc/ch6_slides.pdf">slides</a> include a formula you may find helpful for your implementation.</p>
  14485. <p>The advantages of scoring model topologies with <strong>DIC</strong> over BIC are presented by Alain Biem in this <a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.58.6208&amp;rep=rep1&amp;type=pdf">reference</a> (also found <a href="https://pdfs.semanticscholar.org/ed3d/7c4a5f607201f3848d4c02dd9ba17c791fc2.pdf">here</a>). DIC scores the discriminant ability of a training set for one word against competing words. Instead of a penalty term for complexity, it provides a penalty if model liklihoods for non-matching words are too similar to model likelihoods for the correct word in the word set.</p>
  14486. </div>
  14487. </div>
  14488. </div>
  14489. <div class="cell border-box-sizing text_cell rendered">
  14490. <div class="prompt input_prompt">
  14491. </div>
  14492. <div class="inner_cell">
  14493. <div class="text_cell_render border-box-sizing rendered_html">
  14494. <p><a id='part2_submission'></a></p>
  14495. <h3 id="Model-Selection-Implementation-Submission">Model Selection Implementation Submission<a class="anchor-link" href="#Model-Selection-Implementation-Submission">&#182;</a></h3><p>Implement <code>SelectorCV</code>, <code>SelectorBIC</code>, and <code>SelectorDIC</code> classes in the <code>my_model_selectors.py</code> module. Run the selectors on the following five words. Then answer the questions about your results.</p>
  14496. <p><strong>Tip:</strong> The <code>hmmlearn</code> library may not be able to train or score all models. Implement try/except contructs as necessary to eliminate non-viable models from consideration.</p>
  14497. </div>
  14498. </div>
  14499. </div>
  14500. <div class="cell border-box-sizing code_cell rendered">
  14501. <div class="input">
  14502. <div class="prompt input_prompt">In&nbsp;[23]:</div>
  14503. <div class="inner_cell">
  14504. <div class="input_area">
  14505. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">words_to_train</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;FISH&#39;</span><span class="p">,</span> <span class="s1">&#39;BOOK&#39;</span><span class="p">,</span> <span class="s1">&#39;VEGETABLE&#39;</span><span class="p">,</span> <span class="s1">&#39;FUTURE&#39;</span><span class="p">,</span> <span class="s1">&#39;JOHN&#39;</span><span class="p">]</span>
  14506. <span class="kn">import</span> <span class="nn">timeit</span>
  14507. </pre></div>
  14508. </div>
  14509. </div>
  14510. </div>
  14511. </div>
  14512. <div class="cell border-box-sizing code_cell rendered">
  14513. <div class="input">
  14514. <div class="prompt input_prompt">In&nbsp;[24]:</div>
  14515. <div class="inner_cell">
  14516. <div class="input_area">
  14517. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO: Implement SelectorCV in my_model_selector.py</span>
  14518. <span class="kn">from</span> <span class="nn">my_model_selectors</span> <span class="k">import</span> <span class="n">SelectorCV</span>
  14519. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets defined in part 1</span>
  14520. <span class="n">sequences</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_sequences</span><span class="p">()</span>
  14521. <span class="n">Xlengths</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_Xlengths</span><span class="p">()</span>
  14522. <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">words_to_train</span><span class="p">:</span>
  14523. <span class="n">start</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span>
  14524. <span class="n">model</span> <span class="o">=</span> <span class="n">SelectorCV</span><span class="p">(</span><span class="n">sequences</span><span class="p">,</span> <span class="n">Xlengths</span><span class="p">,</span> <span class="n">word</span><span class="p">,</span>
  14525. <span class="n">min_n_components</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">max_n_components</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">random_state</span> <span class="o">=</span> <span class="mi">14</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
  14526. <span class="n">end</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span> <span class="o">-</span> <span class="n">start</span>
  14527. <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
  14528. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training complete for </span><span class="si">{}</span><span class="s2"> with </span><span class="si">{}</span><span class="s2"> states with time </span><span class="si">{}</span><span class="s2"> seconds&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span>
  14529. <span class="k">else</span><span class="p">:</span>
  14530. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training failed for </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">))</span>
  14531. </pre></div>
  14532. </div>
  14533. </div>
  14534. </div>
  14535. <div class="output_wrapper">
  14536. <div class="output">
  14537. <div class="output_area"><div class="prompt"></div>
  14538. <div class="output_subarea output_stream output_stdout output_text">
  14539. <pre>Training complete for FISH with 3 states with time 0.028000007005175576 seconds
  14540. Training complete for BOOK with 15 states with time 2.330455476010684 seconds
  14541. Training complete for VEGETABLE with 15 states with time 0.7969696299987845 seconds
  14542. Training complete for FUTURE with 15 states with time 2.4186781469907146 seconds
  14543. Training complete for JOHN with 15 states with time 25.637559488997795 seconds
  14544. </pre>
  14545. </div>
  14546. </div>
  14547. </div>
  14548. </div>
  14549. </div>
  14550. <div class="cell border-box-sizing code_cell rendered">
  14551. <div class="input">
  14552. <div class="prompt input_prompt">In&nbsp;[25]:</div>
  14553. <div class="inner_cell">
  14554. <div class="input_area">
  14555. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO: Implement SelectorBIC in module my_model_selectors.py</span>
  14556. <span class="kn">from</span> <span class="nn">my_model_selectors</span> <span class="k">import</span> <span class="n">SelectorBIC</span>
  14557. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets defined in part 1</span>
  14558. <span class="n">sequences</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_sequences</span><span class="p">()</span>
  14559. <span class="n">Xlengths</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_Xlengths</span><span class="p">()</span>
  14560. <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">words_to_train</span><span class="p">:</span>
  14561. <span class="n">start</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span>
  14562. <span class="n">model</span> <span class="o">=</span> <span class="n">SelectorBIC</span><span class="p">(</span><span class="n">sequences</span><span class="p">,</span> <span class="n">Xlengths</span><span class="p">,</span> <span class="n">word</span><span class="p">,</span>
  14563. <span class="n">min_n_components</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">max_n_components</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">random_state</span> <span class="o">=</span> <span class="mi">14</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
  14564. <span class="n">end</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span><span class="o">-</span><span class="n">start</span>
  14565. <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
  14566. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training complete for </span><span class="si">{}</span><span class="s2"> with </span><span class="si">{}</span><span class="s2"> states with time </span><span class="si">{}</span><span class="s2"> seconds&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span>
  14567. <span class="k">else</span><span class="p">:</span>
  14568. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training failed for </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">))</span>
  14569. </pre></div>
  14570. </div>
  14571. </div>
  14572. </div>
  14573. <div class="output_wrapper">
  14574. <div class="output">
  14575. <div class="output_area"><div class="prompt"></div>
  14576. <div class="output_subarea output_stream output_stdout output_text">
  14577. <pre>Training complete for FISH with 2 states with time 0.09146881599735934 seconds
  14578. Training complete for BOOK with 2 states with time 2.016845521997311 seconds
  14579. Training complete for VEGETABLE with 2 states with time 0.7241176120005548 seconds
  14580. Training complete for FUTURE with 2 states with time 2.1909853079996537 seconds
  14581. Training complete for JOHN with 2 states with time 22.080462529993383 seconds
  14582. </pre>
  14583. </div>
  14584. </div>
  14585. </div>
  14586. </div>
  14587. </div>
  14588. <div class="cell border-box-sizing code_cell rendered">
  14589. <div class="input">
  14590. <div class="prompt input_prompt">In&nbsp;[26]:</div>
  14591. <div class="inner_cell">
  14592. <div class="input_area">
  14593. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO: Implement SelectorDIC in module my_model_selectors.py</span>
  14594. <span class="kn">from</span> <span class="nn">my_model_selectors</span> <span class="k">import</span> <span class="n">SelectorDIC</span>
  14595. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets defined in part 1</span>
  14596. <span class="n">sequences</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_sequences</span><span class="p">()</span>
  14597. <span class="n">Xlengths</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_Xlengths</span><span class="p">()</span>
  14598. <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">words_to_train</span><span class="p">:</span>
  14599. <span class="n">start</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span>
  14600. <span class="n">model</span> <span class="o">=</span> <span class="n">SelectorDIC</span><span class="p">(</span><span class="n">sequences</span><span class="p">,</span> <span class="n">Xlengths</span><span class="p">,</span> <span class="n">word</span><span class="p">,</span>
  14601. <span class="n">min_n_components</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">max_n_components</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span> <span class="n">random_state</span> <span class="o">=</span> <span class="mi">14</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
  14602. <span class="n">end</span> <span class="o">=</span> <span class="n">timeit</span><span class="o">.</span><span class="n">default_timer</span><span class="p">()</span><span class="o">-</span><span class="n">start</span>
  14603. <span class="k">if</span> <span class="n">model</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
  14604. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training complete for </span><span class="si">{}</span><span class="s2"> with </span><span class="si">{}</span><span class="s2"> states with time </span><span class="si">{}</span><span class="s2"> seconds&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">,</span> <span class="n">model</span><span class="o">.</span><span class="n">n_components</span><span class="p">,</span> <span class="n">end</span><span class="p">))</span>
  14605. <span class="k">else</span><span class="p">:</span>
  14606. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Training failed for </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">word</span><span class="p">))</span>
  14607. </pre></div>
  14608. </div>
  14609. </div>
  14610. </div>
  14611. <div class="output_wrapper">
  14612. <div class="output">
  14613. <div class="output_area"><div class="prompt"></div>
  14614. <div class="output_subarea output_stream output_stdout output_text">
  14615. <pre>Training complete for FISH with 3 states with time 0.09454512700904161 seconds
  14616. Training complete for BOOK with 15 states with time 2.4017886569927214 seconds
  14617. Training complete for VEGETABLE with 15 states with time 0.8214017159916693 seconds
  14618. Training complete for FUTURE with 15 states with time 2.455093226992176 seconds
  14619. Training complete for JOHN with 15 states with time 25.174293504998786 seconds
  14620. </pre>
  14621. </div>
  14622. </div>
  14623. </div>
  14624. </div>
  14625. </div>
  14626. <div class="cell border-box-sizing text_cell rendered">
  14627. <div class="prompt input_prompt">
  14628. </div>
  14629. <div class="inner_cell">
  14630. <div class="text_cell_render border-box-sizing rendered_html">
  14631. <p><strong>Question 2:</strong> Compare and contrast the possible advantages and disadvantages of the various model selectors implemented.</p>
  14632. <p><strong>Answer 2:</strong> Selection using cross validation is the easier to implement compared to BIC &amp; DIC. The idea in BIC to penalize model complexity is interesting as it may also have a side effect of faster running times. Yet, I also think it might be a doubled edged sword, as in some cases it will sacrifice complexity for performance. <strong>DIC seems like the best selector</strong> because it will use the model that gives the best distinction between the word of interest and all others. This should result in the best performing model but also the most sluggish as it needs to calculate the probabilities of each word.</p>
  14633. <p>A more formal listing of advantages &amp; disadvantages is depicted below.</p>
  14634. <h3 id="Cross-Validation:">Cross Validation:<a class="anchor-link" href="#Cross-Validation:">&#182;</a></h3><p><strong>Advantages:</strong> Does not need a lot of data for training – as the train data is folded to simulate the behavior that the model will have in test data.</p>
  14635. <p><strong>Disadvantages:</strong> It needs to split the sequences from the beginning each time a new state will be evaluated (overhead).</p>
  14636. <h3 id="BIC:">BIC:<a class="anchor-link" href="#BIC:">&#182;</a></h3><p><strong>Advantages:</strong> It penalizes model's complexity (of parameters).</p>
  14637. <p><strong>Disadvantages</strong> Not as accurate as cross-validation – this could be possible because of the requirement of more training data (as there are no folds to simulate test data).</p>
  14638. <h3 id="DIC:">DIC:<a class="anchor-link" href="#DIC:">&#182;</a></h3><p><strong>Advantages:</strong> Better performance than BIC.</p>
  14639. <p><strong>Disadvantages:</strong> Model complexity is not penalized which might lead to a large number of parameters.</p>
  14640. </div>
  14641. </div>
  14642. </div>
  14643. <div class="cell border-box-sizing text_cell rendered">
  14644. <div class="prompt input_prompt">
  14645. </div>
  14646. <div class="inner_cell">
  14647. <div class="text_cell_render border-box-sizing rendered_html">
  14648. <p><a id='part2_test'></a></p>
  14649. <h3 id="Model-Selector-Unit-Testing">Model Selector Unit Testing<a class="anchor-link" href="#Model-Selector-Unit-Testing">&#182;</a></h3><p>Run the following unit tests as a sanity check on the implemented model selectors. The test simply looks for valid interfaces but is not exhaustive. However, the project should not be submitted if these tests don't pass.</p>
  14650. </div>
  14651. </div>
  14652. </div>
  14653. <div class="cell border-box-sizing code_cell rendered">
  14654. <div class="input">
  14655. <div class="prompt input_prompt">In&nbsp;[27]:</div>
  14656. <div class="inner_cell">
  14657. <div class="input_area">
  14658. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">asl_test_model_selectors</span> <span class="k">import</span> <span class="n">TestSelectors</span>
  14659. <span class="n">suite</span> <span class="o">=</span> <span class="n">unittest</span><span class="o">.</span><span class="n">TestLoader</span><span class="p">()</span><span class="o">.</span><span class="n">loadTestsFromModule</span><span class="p">(</span><span class="n">TestSelectors</span><span class="p">())</span>
  14660. <span class="n">unittest</span><span class="o">.</span><span class="n">TextTestRunner</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">suite</span><span class="p">)</span>
  14661. </pre></div>
  14662. </div>
  14663. </div>
  14664. </div>
  14665. <div class="output_wrapper">
  14666. <div class="output">
  14667. <div class="output_area"><div class="prompt"></div>
  14668. <div class="output_subarea output_stream output_stderr output_text">
  14669. <pre>....
  14670. ----------------------------------------------------------------------
  14671. Ran 4 tests in 39.572s
  14672. OK
  14673. </pre>
  14674. </div>
  14675. </div>
  14676. <div class="output_area"><div class="prompt output_prompt">Out[27]:</div>
  14677. <div class="output_text output_subarea output_execute_result">
  14678. <pre>&lt;unittest.runner.TextTestResult run=4 errors=0 failures=0&gt;</pre>
  14679. </div>
  14680. </div>
  14681. </div>
  14682. </div>
  14683. </div>
  14684. <div class="cell border-box-sizing text_cell rendered">
  14685. <div class="prompt input_prompt">
  14686. </div>
  14687. <div class="inner_cell">
  14688. <div class="text_cell_render border-box-sizing rendered_html">
  14689. <p><a id='part3_tutorial'></a></p>
  14690. <h2 id="PART-3:-Recognizer">PART 3: Recognizer<a class="anchor-link" href="#PART-3:-Recognizer">&#182;</a></h2><p>The objective of this section is to "put it all together". Using the four feature sets created and the three model selectors, you will experiment with the models and present your results. Instead of training only five specific words as in the previous section, train the entire set with a feature set and model selector strategy.</p>
  14691. <h3 id="Recognizer-Tutorial">Recognizer Tutorial<a class="anchor-link" href="#Recognizer-Tutorial">&#182;</a></h3><h5 id="Train-the-full-training-set">Train the full training set<a class="anchor-link" href="#Train-the-full-training-set">&#182;</a></h5><p>The following example trains the entire set with the example <code>features_ground</code> and <code>SelectorConstant</code> features and model selector. Use this pattern for you experimentation and final submission cells.</p>
  14692. </div>
  14693. </div>
  14694. </div>
  14695. <div class="cell border-box-sizing code_cell rendered">
  14696. <div class="input">
  14697. <div class="prompt input_prompt">In&nbsp;[28]:</div>
  14698. <div class="inner_cell">
  14699. <div class="input_area">
  14700. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># autoreload for automatically reloading changes made in my_model_selectors and my_recognizer</span>
  14701. <span class="o">%</span><span class="k">load_ext</span> autoreload
  14702. <span class="o">%</span><span class="k">autoreload</span> 2
  14703. <span class="kn">from</span> <span class="nn">my_model_selectors</span> <span class="k">import</span> <span class="n">SelectorConstant</span>
  14704. <span class="k">def</span> <span class="nf">train_all_words</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">model_selector</span><span class="p">):</span>
  14705. <span class="n">training</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_training</span><span class="p">(</span><span class="n">features</span><span class="p">)</span> <span class="c1"># Experiment here with different feature sets defined in part 1</span>
  14706. <span class="n">sequences</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_sequences</span><span class="p">()</span>
  14707. <span class="n">Xlengths</span> <span class="o">=</span> <span class="n">training</span><span class="o">.</span><span class="n">get_all_Xlengths</span><span class="p">()</span>
  14708. <span class="n">model_dict</span> <span class="o">=</span> <span class="p">{}</span>
  14709. <span class="k">for</span> <span class="n">word</span> <span class="ow">in</span> <span class="n">training</span><span class="o">.</span><span class="n">words</span><span class="p">:</span>
  14710. <span class="n">model</span> <span class="o">=</span> <span class="n">model_selector</span><span class="p">(</span><span class="n">sequences</span><span class="p">,</span> <span class="n">Xlengths</span><span class="p">,</span> <span class="n">word</span><span class="p">,</span>
  14711. <span class="n">n_constant</span><span class="o">=</span><span class="mi">3</span><span class="p">)</span><span class="o">.</span><span class="n">select</span><span class="p">()</span>
  14712. <span class="n">model_dict</span><span class="p">[</span><span class="n">word</span><span class="p">]</span><span class="o">=</span><span class="n">model</span>
  14713. <span class="k">return</span> <span class="n">model_dict</span>
  14714. <span class="n">models</span> <span class="o">=</span> <span class="n">train_all_words</span><span class="p">(</span><span class="n">features_ground</span><span class="p">,</span> <span class="n">SelectorConstant</span><span class="p">)</span>
  14715. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of word models returned = </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">models</span><span class="p">)))</span>
  14716. </pre></div>
  14717. </div>
  14718. </div>
  14719. </div>
  14720. <div class="output_wrapper">
  14721. <div class="output">
  14722. <div class="output_area"><div class="prompt"></div>
  14723. <div class="output_subarea output_stream output_stdout output_text">
  14724. <pre>Number of word models returned = 112
  14725. </pre>
  14726. </div>
  14727. </div>
  14728. </div>
  14729. </div>
  14730. </div>
  14731. <div class="cell border-box-sizing text_cell rendered">
  14732. <div class="prompt input_prompt">
  14733. </div>
  14734. <div class="inner_cell">
  14735. <div class="text_cell_render border-box-sizing rendered_html">
  14736. <h5 id="Load-the-test-set">Load the test set<a class="anchor-link" href="#Load-the-test-set">&#182;</a></h5><p>The <code>build_test</code> method in <code>ASLdb</code> is similar to the <code>build_training</code> method already presented, but there are a few differences:</p>
  14737. <ul>
  14738. <li>the object is type <code>SinglesData</code> </li>
  14739. <li>the internal dictionary keys are the index of the test word rather than the word itself</li>
  14740. <li>the getter methods are <code>get_all_sequences</code>, <code>get_all_Xlengths</code>, <code>get_item_sequences</code> and <code>get_item_Xlengths</code></li>
  14741. </ul>
  14742. </div>
  14743. </div>
  14744. </div>
  14745. <div class="cell border-box-sizing code_cell rendered">
  14746. <div class="input">
  14747. <div class="prompt input_prompt">In&nbsp;[29]:</div>
  14748. <div class="inner_cell">
  14749. <div class="input_area">
  14750. <div class=" highlight hl-ipython3"><pre><span></span><span class="n">test_set</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_test</span><span class="p">(</span><span class="n">features_ground</span><span class="p">)</span>
  14751. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of test set items: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">test_set</span><span class="o">.</span><span class="n">num_items</span><span class="p">))</span>
  14752. <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Number of test set sentences: </span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">test_set</span><span class="o">.</span><span class="n">sentences_index</span><span class="p">)))</span>
  14753. </pre></div>
  14754. </div>
  14755. </div>
  14756. </div>
  14757. <div class="output_wrapper">
  14758. <div class="output">
  14759. <div class="output_area"><div class="prompt"></div>
  14760. <div class="output_subarea output_stream output_stdout output_text">
  14761. <pre>Number of test set items: 178
  14762. Number of test set sentences: 40
  14763. </pre>
  14764. </div>
  14765. </div>
  14766. </div>
  14767. </div>
  14768. </div>
  14769. <div class="cell border-box-sizing text_cell rendered">
  14770. <div class="prompt input_prompt">
  14771. </div>
  14772. <div class="inner_cell">
  14773. <div class="text_cell_render border-box-sizing rendered_html">
  14774. <p><a id='part3_submission'></a></p>
  14775. <h3 id="Recognizer-Implementation-Submission">Recognizer Implementation Submission<a class="anchor-link" href="#Recognizer-Implementation-Submission">&#182;</a></h3><p>For the final project submission, students must implement a recognizer following guidance in the <code>my_recognizer.py</code> module. Experiment with the four feature sets and the three model selection methods (that's 12 possible combinations). You can add and remove cells for experimentation or run the recognizers locally in some other way during your experiments, but retain the results for your discussion. For submission, you will provide code cells of <strong>only three</strong> interesting combinations for your discussion (see questions below). At least one of these should produce a word error rate of less than 60%, i.e. WER &lt; 0.60 .</p>
  14776. <p><strong>Tip:</strong> The hmmlearn library may not be able to train or score all models. Implement try/except contructs as necessary to eliminate non-viable models from consideration.</p>
  14777. </div>
  14778. </div>
  14779. </div>
  14780. <div class="cell border-box-sizing code_cell rendered">
  14781. <div class="input">
  14782. <div class="prompt input_prompt">In&nbsp;[30]:</div>
  14783. <div class="inner_cell">
  14784. <div class="input_area">
  14785. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO implement the recognize method in my_recognizer</span>
  14786. <span class="kn">from</span> <span class="nn">my_recognizer</span> <span class="k">import</span> <span class="n">recognize</span>
  14787. <span class="kn">from</span> <span class="nn">asl_utils</span> <span class="k">import</span> <span class="n">show_errors</span>
  14788. </pre></div>
  14789. </div>
  14790. </div>
  14791. </div>
  14792. </div>
  14793. <div class="cell border-box-sizing code_cell rendered">
  14794. <div class="input">
  14795. <div class="prompt input_prompt">In&nbsp;[33]:</div>
  14796. <div class="inner_cell">
  14797. <div class="input_area">
  14798. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO Choose a feature set and model selector</span>
  14799. <span class="n">features</span> <span class="o">=</span> <span class="n">features_polar</span> <span class="c1"># change as needed</span>
  14800. <span class="n">model_selector</span> <span class="o">=</span> <span class="n">SelectorCV</span> <span class="c1"># change as needed</span>
  14801. <span class="c1"># TODO Recognize the test set and display the result with the show_errors method</span>
  14802. <span class="n">models</span> <span class="o">=</span> <span class="n">train_all_words</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">model_selector</span><span class="p">)</span>
  14803. <span class="n">test_set</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_test</span><span class="p">(</span><span class="n">features</span><span class="p">)</span>
  14804. <span class="n">probabilities</span><span class="p">,</span> <span class="n">guesses</span> <span class="o">=</span> <span class="n">recognize</span><span class="p">(</span><span class="n">models</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14805. <span class="n">show_errors</span><span class="p">(</span><span class="n">guesses</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14806. </pre></div>
  14807. </div>
  14808. </div>
  14809. </div>
  14810. <div class="output_wrapper">
  14811. <div class="output">
  14812. <div class="output_area"><div class="prompt"></div>
  14813. <div class="output_subarea output_stream output_stdout output_text">
  14814. <pre>
  14815. **** WER = 0.5280898876404494
  14816. Total correct: 84 out of 178
  14817. Video Recognized Correct
  14818. =====================================================================================================
  14819. 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK
  14820. 7: JOHN CAN GO CAN JOHN CAN GO CAN
  14821. 12: JOHN *WHAT *JOHN CAN JOHN CAN GO CAN
  14822. 21: JOHN *HOMEWORK *JOHN *PREFER BUT *WHAT *FUTURE *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN
  14823. 25: JOHN *IX IX *WHO IX JOHN LIKE IX IX IX
  14824. 28: JOHN *FUTURE IX *FUTURE *LOVE JOHN LIKE IX IX IX
  14825. 30: JOHN LIKE *MARY *MARY *MARY JOHN LIKE IX IX IX
  14826. 36: *IX *VISIT *GIVE *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1
  14827. 40: JOHN *GO *DECIDE *JOHN *MARY JOHN IX THINK MARY LOVE
  14828. 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE
  14829. 50: *JOHN *SEE BUY CAR *JOHN FUTURE JOHN BUY CAR SHOULD
  14830. 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE
  14831. 57: *MARY *GO *GO MARY JOHN DECIDE VISIT MARY
  14832. 67: *SHOULD FUTURE *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE
  14833. 71: JOHN *FUTURE *GIVE1 MARY JOHN WILL VISIT MARY
  14834. 74: *IX *GO *GO *VISIT JOHN NOT VISIT MARY
  14835. 77: *JOHN *GIVE1 MARY ANN BLAME MARY
  14836. 84: *HOMEWORK *GIVE1 *HOMEWORK *COAT IX-1P FIND SOMETHING-ONE BOOK
  14837. 89: *MAN *GIVE *IX *IX IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT
  14838. 90: JOHN GIVE IX SOMETHING-ONE WOMAN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14839. 92: JOHN *IX IX *IX *IX BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14840. 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN
  14841. 105: JOHN *SEE JOHN LEG
  14842. 107: JOHN POSS *HAVE HAVE *MARY JOHN POSS FRIEND HAVE CANDY
  14843. 108: *LOVE *HOMEWORK WOMAN ARRIVE
  14844. 113: IX CAR *IX *MARY *JOHN IX CAR BLUE SUE BUY
  14845. 119: *MARY *BUY1 IX *BLAME *IX SUE BUY IX CAR BLUE
  14846. 122: JOHN *GIVE1 BOOK JOHN READ BOOK
  14847. 139: JOHN *ARRIVE WHAT *MARY *ARRIVE JOHN BUY WHAT YESTERDAY BOOK
  14848. 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK
  14849. 158: LOVE JOHN WHO LOVE JOHN WHO
  14850. 167: JOHN *MARY *VISIT LOVE MARY JOHN IX SAY LOVE MARY
  14851. 171: *IX MARY BLAME JOHN MARY BLAME
  14852. 174: *JOHN *GIVE3 GIVE1 *YESTERDAY *JOHN PEOPLE GROUP GIVE1 JANA TOY
  14853. 181: *EAT ARRIVE JOHN ARRIVE
  14854. 184: ALL BOY *GIVE1 TEACHER *YESTERDAY ALL BOY GIVE TEACHER APPLE
  14855. 189: *MARY *GO *YESTERDAY BOX JOHN GIVE GIRL BOX
  14856. 193: JOHN *GO *YESTERDAY BOX JOHN GIVE GIRL BOX
  14857. 199: *HOMEWORK *STUDENT *GO LIKE CHOCOLATE WHO
  14858. 201: JOHN *MAN *LOVE *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE
  14859. </pre>
  14860. </div>
  14861. </div>
  14862. </div>
  14863. </div>
  14864. </div>
  14865. <div class="cell border-box-sizing code_cell rendered">
  14866. <div class="input">
  14867. <div class="prompt input_prompt">In&nbsp;[34]:</div>
  14868. <div class="inner_cell">
  14869. <div class="input_area">
  14870. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO Choose a feature set and model selector</span>
  14871. <span class="c1"># TODO Recognize the test set and display the result with the show_errors method</span>
  14872. <span class="n">features</span> <span class="o">=</span> <span class="n">features_polar</span> <span class="c1"># change as needed</span>
  14873. <span class="n">model_selector</span> <span class="o">=</span> <span class="n">SelectorDIC</span> <span class="c1"># change as needed</span>
  14874. <span class="c1"># TODO Recognize the test set and display the result with the show_errors method</span>
  14875. <span class="n">models</span> <span class="o">=</span> <span class="n">train_all_words</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">model_selector</span><span class="p">)</span>
  14876. <span class="n">test_set</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_test</span><span class="p">(</span><span class="n">features</span><span class="p">)</span>
  14877. <span class="n">probabilities</span><span class="p">,</span> <span class="n">guesses</span> <span class="o">=</span> <span class="n">recognize</span><span class="p">(</span><span class="n">models</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14878. <span class="n">show_errors</span><span class="p">(</span><span class="n">guesses</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14879. </pre></div>
  14880. </div>
  14881. </div>
  14882. </div>
  14883. <div class="output_wrapper">
  14884. <div class="output">
  14885. <div class="output_area"><div class="prompt"></div>
  14886. <div class="output_subarea output_stream output_stdout output_text">
  14887. <pre>
  14888. **** WER = 0.5337078651685393
  14889. Total correct: 83 out of 178
  14890. Video Recognized Correct
  14891. =====================================================================================================
  14892. 2: JOHN *NEW HOMEWORK JOHN WRITE HOMEWORK
  14893. 7: JOHN CAN GO CAN JOHN CAN GO CAN
  14894. 12: JOHN *WHAT *JOHN CAN JOHN CAN GO CAN
  14895. 21: JOHN *HOMEWORK *JOHN *PREFER *CAR *WHAT *FUTURE *WHO JOHN FISH WONT EAT BUT CAN EAT CHICKEN
  14896. 25: JOHN *IX IX *WHO IX JOHN LIKE IX IX IX
  14897. 28: JOHN *FUTURE IX *FUTURE *LOVE JOHN LIKE IX IX IX
  14898. 30: JOHN LIKE *MARY *MARY *MARY JOHN LIKE IX IX IX
  14899. 36: *IX *EAT *GIVE *GIVE *MARY *MARY MARY VEGETABLE KNOW IX LIKE CORN1
  14900. 40: JOHN *GO *GIVE *JOHN *MARY JOHN IX THINK MARY LOVE
  14901. 43: JOHN *IX BUY HOUSE JOHN MUST BUY HOUSE
  14902. 50: *JOHN *SEE BUY CAR *JOHN FUTURE JOHN BUY CAR SHOULD
  14903. 54: JOHN SHOULD NOT BUY HOUSE JOHN SHOULD NOT BUY HOUSE
  14904. 57: *MARY *GO *GO MARY JOHN DECIDE VISIT MARY
  14905. 67: *SHOULD FUTURE *MARY BUY HOUSE JOHN FUTURE NOT BUY HOUSE
  14906. 71: JOHN *FUTURE *GIVE1 MARY JOHN WILL VISIT MARY
  14907. 74: *IX *GO *GO *VISIT JOHN NOT VISIT MARY
  14908. 77: *JOHN *GIVE1 MARY ANN BLAME MARY
  14909. 84: *HOMEWORK *GIVE1 *HOMEWORK *COAT IX-1P FIND SOMETHING-ONE BOOK
  14910. 89: *GIVE *GIVE *IX *IX IX *ARRIVE *BOOK JOHN IX GIVE MAN IX NEW COAT
  14911. 90: JOHN GIVE IX SOMETHING-ONE WOMAN *ARRIVE JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14912. 92: JOHN *IX IX *IX *IX BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14913. 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN
  14914. 105: JOHN *SEE JOHN LEG
  14915. 107: JOHN POSS *HAVE HAVE *MARY JOHN POSS FRIEND HAVE CANDY
  14916. 108: *LOVE *HOMEWORK WOMAN ARRIVE
  14917. 113: IX CAR *IX *MARY *JOHN IX CAR BLUE SUE BUY
  14918. 119: *MARY *BUY1 IX *BLAME *IX SUE BUY IX CAR BLUE
  14919. 122: JOHN *GIVE1 BOOK JOHN READ BOOK
  14920. 139: JOHN *ARRIVE WHAT *MARY *ARRIVE JOHN BUY WHAT YESTERDAY BOOK
  14921. 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK
  14922. 158: LOVE JOHN WHO LOVE JOHN WHO
  14923. 167: JOHN *MARY *VISIT LOVE MARY JOHN IX SAY LOVE MARY
  14924. 171: *IX MARY BLAME JOHN MARY BLAME
  14925. 174: *JOHN GROUP GIVE1 *YESTERDAY *JOHN PEOPLE GROUP GIVE1 JANA TOY
  14926. 181: *EAT ARRIVE JOHN ARRIVE
  14927. 184: ALL BOY *GIVE1 TEACHER *YESTERDAY ALL BOY GIVE TEACHER APPLE
  14928. 189: *MARY *GO *YESTERDAY BOX JOHN GIVE GIRL BOX
  14929. 193: JOHN *GO *YESTERDAY BOX JOHN GIVE GIRL BOX
  14930. 199: *HOMEWORK *STUDENT *GO LIKE CHOCOLATE WHO
  14931. 201: JOHN *GIVE *LOVE *JOHN BUY HOUSE JOHN TELL MARY IX-1P BUY HOUSE
  14932. </pre>
  14933. </div>
  14934. </div>
  14935. </div>
  14936. </div>
  14937. </div>
  14938. <div class="cell border-box-sizing code_cell rendered">
  14939. <div class="input">
  14940. <div class="prompt input_prompt">In&nbsp;[35]:</div>
  14941. <div class="inner_cell">
  14942. <div class="input_area">
  14943. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># TODO Choose a feature set and model selector</span>
  14944. <span class="c1"># TODO Recognize the test set and display the result with the show_errors method</span>
  14945. <span class="n">features</span> <span class="o">=</span> <span class="n">features_norm</span> <span class="c1"># change as needed</span>
  14946. <span class="n">model_selector</span> <span class="o">=</span> <span class="n">SelectorCV</span> <span class="c1"># change as needed</span>
  14947. <span class="c1"># TODO Recognize the test set and display the result with the show_errors method</span>
  14948. <span class="n">models</span> <span class="o">=</span> <span class="n">train_all_words</span><span class="p">(</span><span class="n">features</span><span class="p">,</span> <span class="n">model_selector</span><span class="p">)</span>
  14949. <span class="n">test_set</span> <span class="o">=</span> <span class="n">asl</span><span class="o">.</span><span class="n">build_test</span><span class="p">(</span><span class="n">features</span><span class="p">)</span>
  14950. <span class="n">probabilities</span><span class="p">,</span> <span class="n">guesses</span> <span class="o">=</span> <span class="n">recognize</span><span class="p">(</span><span class="n">models</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14951. <span class="n">show_errors</span><span class="p">(</span><span class="n">guesses</span><span class="p">,</span> <span class="n">test_set</span><span class="p">)</span>
  14952. </pre></div>
  14953. </div>
  14954. </div>
  14955. </div>
  14956. <div class="output_wrapper">
  14957. <div class="output">
  14958. <div class="output_area"><div class="prompt"></div>
  14959. <div class="output_subarea output_stream output_stdout output_text">
  14960. <pre>
  14961. **** WER = 0.6067415730337079
  14962. Total correct: 70 out of 178
  14963. Video Recognized Correct
  14964. =====================================================================================================
  14965. 2: JOHN WRITE HOMEWORK JOHN WRITE HOMEWORK
  14966. 7: *MARY *CAR GO *WHAT JOHN CAN GO CAN
  14967. 12: JOHN *CAR *WHAT CAN JOHN CAN GO CAN
  14968. 21: *MARY *BOX *JOHN *BLAME *CAR *CAR *CHICKEN *WRITE JOHN FISH WONT EAT BUT CAN EAT CHICKEN
  14969. 25: JOHN LIKE IX *MARY IX JOHN LIKE IX IX IX
  14970. 28: *ANN LIKE *ANN *ANN *ANN JOHN LIKE IX IX IX
  14971. 30: *IX-1P *CHOCOLATE *MARY *LOVE *LOVE JOHN LIKE IX IX IX
  14972. 36: MARY *MARY *YESTERDAY *WOMAN LIKE *IX MARY VEGETABLE KNOW IX LIKE CORN1
  14973. 40: *MARY *JOHN *FUTURE1 MARY *MARY JOHN IX THINK MARY LOVE
  14974. 43: JOHN *FUTURE BUY HOUSE JOHN MUST BUY HOUSE
  14975. 50: *POSS *SEE *BOX CAR *IX FUTURE JOHN BUY CAR SHOULD
  14976. 54: JOHN *FUTURE *SHOULD *ARRIVE HOUSE JOHN SHOULD NOT BUY HOUSE
  14977. 57: *LOVE *IX *JOHN *VISIT JOHN DECIDE VISIT MARY
  14978. 67: *MARY *IX *JOHN *ARRIVE HOUSE JOHN FUTURE NOT BUY HOUSE
  14979. 71: JOHN WILL VISIT MARY JOHN WILL VISIT MARY
  14980. 74: *GO *VISIT VISIT MARY JOHN NOT VISIT MARY
  14981. 77: *JOHN BLAME MARY ANN BLAME MARY
  14982. 84: *JOHN *BOX *VISIT BOOK IX-1P FIND SOMETHING-ONE BOOK
  14983. 89: *MARY *POSS *IX *IX IX *ARRIVE COAT JOHN IX GIVE MAN IX NEW COAT
  14984. 90: *SELF *IX IX *IX WOMAN BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14985. 92: JOHN *IX IX *IX *LOVE BOOK JOHN GIVE IX SOMETHING-ONE WOMAN BOOK
  14986. 100: POSS NEW CAR BREAK-DOWN POSS NEW CAR BREAK-DOWN
  14987. 105: JOHN *POSS JOHN LEG
  14988. 107: *MARY POSS *BOX *MARY *MARY JOHN POSS FRIEND HAVE CANDY
  14989. 108: *LOVE *HOMEWORK WOMAN ARRIVE
  14990. 113: *SHOULD CAR *IX *JOHN *BOX IX CAR BLUE SUE BUY
  14991. 119: *PREFER *BUY1 IX *JOHN *GO SUE BUY IX CAR BLUE
  14992. 122: JOHN *GIVE1 BOOK JOHN READ BOOK
  14993. 139: JOHN *BUY1 *CAR *JOHN BOOK JOHN BUY WHAT YESTERDAY BOOK
  14994. 142: JOHN BUY YESTERDAY WHAT BOOK JOHN BUY YESTERDAY WHAT BOOK
  14995. 158: LOVE JOHN WHO LOVE JOHN WHO
  14996. 167: JOHN IX *SAY-1P LOVE *IX JOHN IX SAY LOVE MARY
  14997. 171: *LIKE *JOHN BLAME JOHN MARY BLAME
  14998. 174: *CAR *GIVE1 GIVE1 *YESTERDAY *CAR PEOPLE GROUP GIVE1 JANA TOY
  14999. 181: JOHN *BOX JOHN ARRIVE
  15000. 184: *IX *IX *GIVE1 TEACHER APPLE ALL BOY GIVE TEACHER APPLE
  15001. 189: *JANA *MARY *YESTERDAY BOX JOHN GIVE GIRL BOX
  15002. 193: *IX *YESTERDAY *YESTERDAY BOX JOHN GIVE GIRL BOX
  15003. 199: *JOHN *BOX *JOHN LIKE CHOCOLATE WHO
  15004. 201: JOHN *GIVE1 *IX *WOMAN *ARRIVE HOUSE JOHN TELL MARY IX-1P BUY HOUSE
  15005. </pre>
  15006. </div>
  15007. </div>
  15008. </div>
  15009. </div>
  15010. </div>
  15011. <div class="cell border-box-sizing text_cell rendered">
  15012. <div class="prompt input_prompt">
  15013. </div>
  15014. <div class="inner_cell">
  15015. <div class="text_cell_render border-box-sizing rendered_html">
  15016. <p><strong>Question 3:</strong> Summarize the error results from three combinations of features and model selectors. What was the "best" combination and why? What additional information might we use to improve our WER? For more insight on improving WER, take a look at the introduction to Part 4.</p>
  15017. <p><strong>Answer 3:</strong></p>
  15018. <table>
  15019. <thead><tr>
  15020. <th><strong>Model</strong></th>
  15021. <th><strong>Features</strong></th>
  15022. <th><strong>WER</strong></th>
  15023. <th><strong>Correct</strong></th>
  15024. <th><strong>Incorrect</strong></th>
  15025. </tr>
  15026. </thead>
  15027. <tbody>
  15028. <tr>
  15029. <td>SelectorCV</td>
  15030. <td>features_polar</td>
  15031. <td>0.5280898876404494</td>
  15032. <td>84</td>
  15033. <td>94</td>
  15034. </tr>
  15035. <tr>
  15036. <td>SelectorDIC</td>
  15037. <td>features_polar</td>
  15038. <td>0.5337078651685393</td>
  15039. <td>83</td>
  15040. <td>95</td>
  15041. </tr>
  15042. <tr>
  15043. <td>SelectorCV</td>
  15044. <td>features_norm</td>
  15045. <td>0.6067415730337079</td>
  15046. <td>70</td>
  15047. <td>108</td>
  15048. </tr>
  15049. </tbody>
  15050. </table>
  15051. <p>The best results were obtained using the <em>SelectorCV</em> model selector which makes efficient use of the training data by folding it and attempting to simulate how the model would behave on test data. However, my preferred model DIC doesn't lag much. <em>features_polar</em> produced the lowest WER (with both <em>SelectorCV &amp; SelectorDIC</em> model). This could be improved by computing the probability of a word being next to another using statistical language models (or other NLP techniques).</p>
  15052. </div>
  15053. </div>
  15054. </div>
  15055. <div class="cell border-box-sizing text_cell rendered">
  15056. <div class="prompt input_prompt">
  15057. </div>
  15058. <div class="inner_cell">
  15059. <div class="text_cell_render border-box-sizing rendered_html">
  15060. <p><a id='part3_test'></a></p>
  15061. <h3 id="Recognizer-Unit-Tests">Recognizer Unit Tests<a class="anchor-link" href="#Recognizer-Unit-Tests">&#182;</a></h3><p>Run the following unit tests as a sanity check on the defined recognizer. The test simply looks for some valid values but is not exhaustive. However, the project should not be submitted if these tests don't pass.</p>
  15062. </div>
  15063. </div>
  15064. </div>
  15065. <div class="cell border-box-sizing code_cell rendered">
  15066. <div class="input">
  15067. <div class="prompt input_prompt">In&nbsp;[&nbsp;]:</div>
  15068. <div class="inner_cell">
  15069. <div class="input_area">
  15070. <div class=" highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">asl_test_recognizer</span> <span class="k">import</span> <span class="n">TestRecognize</span>
  15071. <span class="n">suite</span> <span class="o">=</span> <span class="n">unittest</span><span class="o">.</span><span class="n">TestLoader</span><span class="p">()</span><span class="o">.</span><span class="n">loadTestsFromModule</span><span class="p">(</span><span class="n">TestRecognize</span><span class="p">())</span>
  15072. <span class="n">unittest</span><span class="o">.</span><span class="n">TextTestRunner</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">suite</span><span class="p">)</span>
  15073. </pre></div>
  15074. </div>
  15075. </div>
  15076. </div>
  15077. </div>
  15078. <div class="cell border-box-sizing text_cell rendered">
  15079. <div class="prompt input_prompt">
  15080. </div>
  15081. <div class="inner_cell">
  15082. <div class="text_cell_render border-box-sizing rendered_html">
  15083. <p><a id='part4_info'></a></p>
  15084. <h2 id="PART-4:-(OPTIONAL)--Improve-the-WER-with-Language-Models">PART 4: (OPTIONAL) Improve the WER with Language Models<a class="anchor-link" href="#PART-4:-(OPTIONAL)--Improve-the-WER-with-Language-Models">&#182;</a></h2><p>We've squeezed just about as much as we can out of the model and still only get about 50% of the words right! Surely we can do better than that. Probability to the rescue again in the form of <a href="https://en.wikipedia.org/wiki/Language_model">statistical language models (SLM)</a>. The basic idea is that each word has some probability of occurrence within the set, and some probability that it is adjacent to specific other words. We can use that additional information to make better choices.</p>
  15085. <h5 id="Additional-reading-and-resources">Additional reading and resources<a class="anchor-link" href="#Additional-reading-and-resources">&#182;</a></h5><ul>
  15086. <li><a href="https://web.stanford.edu/class/cs124/lec/languagemodeling.pdf">Introduction to N-grams (Stanford Jurafsky slides)</a></li>
  15087. <li><a href="https://www-i6.informatik.rwth-aachen.de/publications/download/154/Dreuw--2007.pdf">Speech Recognition Techniques for a Sign Language Recognition System, Philippe Dreuw et al</a> see the improved results of applying LM on <em>this</em> data!</li>
  15088. <li><a href="ftp://wasserstoff.informatik.rwth-aachen.de/pub/rwth-boston-104/lm/">SLM data for <em>this</em> ASL dataset</a></li>
  15089. </ul>
  15090. <h5 id="Optional-challenge">Optional challenge<a class="anchor-link" href="#Optional-challenge">&#182;</a></h5><p>The recognizer you implemented in Part 3 is equivalent to a "0-gram" SLM. Improve the WER with the SLM data provided with the data set in the link above using "1-gram", "2-gram", and/or "3-gram" statistics. The <code>probabilities</code> data you've already calculated will be useful and can be turned into a pandas DataFrame if desired (see next cell).<br>
  15091. Good luck! Share your results with the class!</p>
  15092. </div>
  15093. </div>
  15094. </div>
  15095. <div class="cell border-box-sizing code_cell rendered">
  15096. <div class="input">
  15097. <div class="prompt input_prompt">In&nbsp;[&nbsp;]:</div>
  15098. <div class="inner_cell">
  15099. <div class="input_area">
  15100. <div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># create a DataFrame of log likelihoods for the test word items</span>
  15101. <span class="n">df_probs</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">data</span><span class="o">=</span><span class="n">probabilities</span><span class="p">)</span>
  15102. <span class="n">df_probs</span><span class="o">.</span><span class="n">head</span><span class="p">()</span>
  15103. </pre></div>
  15104. </div>
  15105. </div>
  15106. </div>
  15107. </div>
  15108. </div>
  15109. </div>
  15110. </body>
  15111. </html>